Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
292 commits
Select commit Hold shift + click to select a range
5c4c2d3
refactor(providers): moved aiprovider construction to base class
marc-romu Aug 5, 2025
d1f8cba
ci: docstrings missing
marc-romu Aug 5, 2025
30fba7e
refactor(infrastructure): complete refactor of `SmartHopper.Infrastru…
marc-romu Aug 6, 2025
e81166f
refactor(managers): renamed namespaces to new structure
marc-romu Aug 6, 2025
fa17c2d
refactor(aicall): new aiagent aiinteraction airequest and airequestbo…
marc-romu Aug 6, 2025
ccbc03c
refactor(aicall): renamed aievaluationresult to aireturn
marc-romu Aug 6, 2025
8f1942d
refactor(airesponse): wip migrating airesponse to aireturn+aimetrics
marc-romu Aug 6, 2025
62e358f
refactor(imggenerate)
marc-romu Aug 6, 2025
a7af60f
refactor(settings): suppress linux check
marc-romu Aug 7, 2025
305c8f0
Merge branch 'refactor/0.6.0-make-easy' of https://github.com/archite…
marc-romu Aug 7, 2025
8240c9b
refactor(aitools): migrated ai tools to use the new implementation
marc-romu Aug 7, 2025
3b7666c
refactor(aiproviders): main call structure in aiproviders
marc-romu Aug 7, 2025
baf9283
refactor(aiproviders): migrated get response to new precall call and …
marc-romu Aug 7, 2025
a6d4042
refactor(aitools): migrate script_new and script_review to the new ca…
marc-romu Aug 8, 2025
9b97c87
refactor(aicall): implemented model validation in airequest
marc-romu Aug 8, 2025
62db447
refactor(executetool): made extraparameters optional
marc-romu Aug 8, 2025
7966f66
refactor: providers and include model default selector in airequest
marc-romu Aug 8, 2025
cffd6bb
refactor(aicall)
marc-romu Aug 10, 2025
a4a3509
refactor(aiproviders): new encode and decode methods
marc-romu Aug 10, 2025
e8e5a24
refactor: multiple code fixes
marc-romu Aug 10, 2025
b1a0e91
refactor(deepseek): handle types of interaction
marc-romu Aug 10, 2025
c3d5532
Merge branch 'refactor/0.6.0-make-easy' of https://github.com/archite…
marc-romu Aug 11, 2025
14e7529
refactor(aitools): use new aitoolcall input and output
marc-romu Aug 11, 2025
b73e807
remove(modelmanager): method to validate tool capabiliteis
marc-romu Aug 11, 2025
52ae89b
refactor(ai-call): consolidate request/call schema and move AIToolCal…
marc-romu Aug 11, 2025
ee9f89b
refactor(providers,infrastructure): unify interaction encoding API; r…
marc-romu Aug 11, 2025
7bd02c5
remove(messaging): removed obsolete messaging tools from core
marc-romu Aug 11, 2025
9c2c566
remove unused code
marc-romu Aug 11, 2025
c457ad7
fix(tests)
marc-romu Aug 12, 2025
cd93d31
Merge branch 'main' of https://github.com/architects-toolkit/SmartHop…
marc-romu Aug 12, 2025
dee1d3a
Merge branch 'dev' of https://github.com/architects-toolkit/SmartHopp…
marc-romu Aug 12, 2025
c176c84
refactor(ai-providers): openai adapted to new schema
marc-romu Aug 12, 2025
f717a37
refactor(chat-dialog): migration of schema in chat dialog and added t…
marc-romu Aug 12, 2025
6305622
refactor(html-renderer): use native ToDescription method for agent names
marc-romu Aug 12, 2025
cddd485
fix(openai): missing closing bracket
marc-romu Aug 12, 2025
ecedd85
refactor(ai-request-call): unify initialization method
marc-romu Aug 12, 2025
9bbdab3
refactor(aicall): unify body‑centric API (AIReturn.Body, SetBody over…
marc-romu Aug 12, 2025
90b498b
refactor(ai-tools): comply with the new schema
marc-romu Aug 12, 2025
8a3ae26
refactor(ai-providers): unify decode API to Decode and simplify AIRet…
marc-romu Aug 12, 2025
94ab338
refactor(webchat): comply with the new schema
marc-romu Aug 12, 2025
c97d95b
fix: compilation errors
marc-romu Aug 12, 2025
d9410a2
fix: compilation errors
marc-romu Aug 12, 2025
8ad76a8
test(infrastructure): update tests for new AICall/AIReturn and provid…
marc-romu Aug 12, 2025
5e341cc
fix(webchatdialog)
marc-romu Aug 12, 2025
bf7e57f
fix(infrastructure)
marc-romu Aug 13, 2025
5b1caa2
feat(ai-request): parameter to process pending tool calls nativelly
marc-romu Aug 13, 2025
635f2c7
fix: code style
marc-romu Aug 13, 2025
3168a14
refactor(aicall): normalize metrics and interactions; propagate provi…
marc-romu Aug 20, 2025
22d172f
Merge branch 'main' of https://github.com/architects-toolkit/SmartHop…
marc-romu Aug 20, 2025
46a71a0
chore: update development version date to 0.6.0-dev.250820
actions-user Aug 20, 2025
d4d5d5a
Merge branch 'dev' of https://github.com/architects-toolkit/SmartHopp…
marc-romu Aug 20, 2025
ce8980d
fix(metrics): corrected data count
marc-romu Aug 20, 2025
3ac487b
fix(list-generate): fix incorrect result output
marc-romu Aug 20, 2025
47ecf5e
chore: update development version date to 0.6.0-dev.250820 (#308)
marc-romu Aug 20, 2025
467e9b7
fix(img-generate): invalid successful check
marc-romu Aug 20, 2025
1ff3b22
refactor(settings): moved assistant settings before providers
marc-romu Aug 20, 2025
c60be4a
fix(webchat): greeting not removing last assistant message in ui
marc-romu Aug 20, 2025
c786f90
Merge branch 'dev' into refactor/0.6.0-make-easy
marc-romu Aug 21, 2025
59792e1
refactor: fix code style and dead code removal
marc-romu Aug 21, 2025
c27e595
Merge branch 'refactor/0.6.0-make-easy' of https://github.com/archite…
marc-romu Aug 21, 2025
6bfc4db
ci: fix trailing spaces
marc-romu Aug 21, 2025
73b91bc
refactor: fix inconsistent namespace names with file path
marc-romu Aug 21, 2025
e4373ae
ci: fix references sorting
marc-romu Aug 21, 2025
cca1d70
ci: multiple style fixes
marc-romu Aug 21, 2025
2b654a1
ci: add missing this. to local methods
marc-romu Aug 21, 2025
a40491a
refactor(infrastructure): unify AI request/return schema and provider…
marc-romu Aug 21, 2025
0da6c4f
refactor(capabilities): renamed capabilities to Format2Format
marc-romu Aug 22, 2025
78cbf6d
chore: update development version date to 0.6.0-dev.250822
actions-user Aug 22, 2025
2a74a60
chore: update development version date to 0.6.0-dev.250822 (#311)
marc-romu Aug 22, 2025
81e5eb5
ci(windsurf): updates in rules and workflows
marc-romu Aug 22, 2025
a87e9f2
docs: add basic documentation
marc-romu Aug 22, 2025
2f9037f
docs: add basic documentation
marc-romu Aug 22, 2025
5625a42
refactor(model-manager): full refactor of the model manager
marc-romu Aug 22, 2025
6d8bb98
refactor(model-manager): centralize model selection to providers
marc-romu Aug 22, 2025
a6c8c59
fix(model-manager): missing image2image capability
marc-romu Aug 22, 2025
dd934b1
Merge branch 'refactor/0.6.0-model-manager' of https://github.com/arc…
marc-romu Aug 22, 2025
a4485e1
fix(model-manager): incorrect fallback to default model for component…
marc-romu Aug 22, 2025
ca0c6ee
docs(model-manager)
marc-romu Aug 22, 2025
e5ace6c
refactor(aireturn): propagate messages to components ui
marc-romu Aug 22, 2025
f905698
refactor(webchat): define toolchat required capabilities
marc-romu Aug 22, 2025
2964b4d
fix(ai-request): fail if no suitable model was found with ui errors
marc-romu Aug 22, 2025
cc35e3f
refactor(ai-request): cache model to use to prevent unnecessary model…
marc-romu Aug 22, 2025
97e39ec
ci(model-manager): new tests
marc-romu Aug 22, 2025
6389c3d
ci(tests): test correct default load and no failure when settings jso…
marc-romu Aug 23, 2025
3d22bef
refactor(ai-call): propagate errors from request to return and component
marc-romu Aug 23, 2025
bd6ea61
feat(ai-runtime-messages): new airuntimemessage model to centralize r…
marc-romu Aug 23, 2025
2b2fb02
feat(ai-tool): include messages in tool-result and image interactions…
marc-romu Aug 23, 2025
3dbd63e
Update src/SmartHopper.Infrastructure/AIModels/AICapability.cs
marc-romu Aug 23, 2025
8ea9d12
remove(ai-return): removed obsolete MergeRuntimeMessagesFrom method
marc-romu Aug 23, 2025
e1a1b4a
refactor(model-manager): centralize model management and provider-sco…
marc-romu Aug 23, 2025
9c8928d
chore: update development version date to 0.6.0-dev.250823
actions-user Aug 23, 2025
de66b99
chore: update development version date to 0.6.0-dev.250823 (#313)
marc-romu Aug 23, 2025
eb44196
feat(component-base): badges in components
marc-romu Aug 23, 2025
3c79238
feat(io): service to safely store and read persistent data
marc-romu Aug 23, 2025
eda2a9e
fix(component-base): not showing labels on hover
marc-romu Aug 23, 2025
4929be3
Merge branch 'dev' into feat/0.6.0-component-badges
marc-romu Aug 23, 2025
cf8ea62
feat(components): add model badges with hover labels and provider str…
marc-romu Aug 23, 2025
1979095
feat(conversation-session): new conversation session to handle reques…
marc-romu Aug 24, 2025
d5aada1
refactor(aicall): move core types to AICall/Core and update providers…
marc-romu Aug 24, 2025
5589c3f
docs: update docs to new organization
marc-romu Aug 24, 2025
cdb139e
feat(streaming): new streaming adapter
marc-romu Aug 24, 2025
310b273
feat(streaming): robust chat fallback on stream failure; add provider…
marc-romu Aug 24, 2025
39c09bf
feat(webchat): added functions to surface to UI partial iterations
marc-romu Aug 24, 2025
d0a0244
feat(canvas-button): add setting to toggle canvas button
marc-romu Aug 24, 2025
262cca0
feat(mistral-ai): added mistral ai support for streaming
marc-romu Aug 24, 2025
694aefa
fix(streaming): fix issues with metrics and wrong chat history
marc-romu Aug 24, 2025
0209cdc
feat(aicall): add JSON Schema service and provider adapters; attach s…
marc-romu Aug 24, 2025
358b5d9
feat(open-ai): make gpt-5-nano the default and verified model
marc-romu Aug 24, 2025
ede364b
feat(policies): new timeout policy
marc-romu Aug 24, 2025
2dfb314
feat(ai-call): new ai-body immutable
marc-romu Aug 24, 2025
c3b05ca
refactor(validation-and-body-builder): several improvements and fixes
marc-romu Aug 25, 2025
73d09be
refactor(infrastructure): centralize validation via PolicyPipeline an…
marc-romu Aug 25, 2025
1c51b30
feat(runtime-messages): added surfaceable parameter to limit exposed …
marc-romu Aug 25, 2025
f7d4ed0
feat(ai-chat-component); continuous update of outputs and metrics
marc-romu Aug 25, 2025
5df9bf1
fix(canvas-button): fixed dialog guid to always open the same dialog
marc-romu Aug 25, 2025
a3574b9
feat(badges): enhanced badges to provide early errors to user for ver…
marc-romu Aug 25, 2025
e46f8c2
feat(ai-chat): live outputs for chat history and metrics
marc-romu Aug 25, 2025
00964d7
feat(runtime-messages): error code for badge surface of errors
marc-romu Aug 25, 2025
d6369cb
refactor(web-chat): code simplification
marc-romu Aug 25, 2025
b43b681
refactor(open-ai): make gpt-5-mini verified instead of gpt-5-nano
marc-romu Aug 25, 2025
b63648f
feat(tests): new data processing testing components
marc-romu Aug 25, 2025
93daca1
feat(ai-models): retrieve models list from api when available
marc-romu Aug 25, 2025
573d484
feat(tests): new data processing testing components
marc-romu Aug 25, 2025
1397110
refactor(tests): fix data testing components expectations
marc-romu Aug 25, 2025
1ecfd74
feat(ai-request-kind): new request kind parameter to distinguish betw…
marc-romu Aug 25, 2025
7e63c1d
fix(data-test-components)
marc-romu Aug 25, 2025
7732966
fix(code-style)
marc-romu Aug 25, 2025
9e352b7
fix(code-style)
marc-romu Aug 25, 2025
5208484
feat(conversation): introduce ConversationSession; refactor AICall, s…
marc-romu Aug 25, 2025
794ac23
chore: update development version date to 0.6.0-dev.250825
actions-user Aug 25, 2025
9f8c56c
chore: update development version date to 0.6.0-dev.250825 (#316)
marc-romu Aug 25, 2025
9908473
Merge branch 'dev' of https://github.com/architects-toolkit/SmartHopp…
marc-romu Aug 25, 2025
f3f1f3b
docs: style fix
marc-romu Aug 25, 2025
6f6065e
Merge branch 'dev' into feat/0.6.0-persistence-service-io
marc-romu Aug 25, 2025
823198c
refactor(ai-tool-call): use constants for defaults in aitoolcall
marc-romu Aug 25, 2025
397cf8e
feat(core-io): introduce safe versioned persistence (V2) (#317)
marc-romu Aug 25, 2025
536d0fd
ci: bump to version 1.0.0
marc-romu Aug 26, 2025
b0559e1
feat(anthropic-provider): new anthropic provider
marc-romu Aug 26, 2025
d1c1595
feat(openrouter-provider): new open router provider
marc-romu Aug 26, 2025
7238f4b
refactor(provider-icons): updated provider icons from lobeicons
marc-romu Aug 26, 2025
f3c854a
refactor(open-router): fix debug message
marc-romu Aug 26, 2025
4ddbf42
refactor(anthropic): fix system messages
marc-romu Aug 26, 2025
1684fe1
refactor(policies): added mapping of finish reason metrics
marc-romu Aug 26, 2025
f38965e
refactor(web-chat): improved prompts
marc-romu Aug 26, 2025
9d42187
refactor(web-chat): fixes in webchat chat history
marc-romu Aug 26, 2025
e21f2ff
refactor(badges): prioritize one badge for clarity
marc-romu Aug 26, 2025
c5e9dca
feat(canvas-button): use settings to setup provider and model
marc-romu Aug 26, 2025
750d77e
refactor(web-chat): new queue for dom update to avoid calling two scr…
marc-romu Aug 26, 2025
a97c532
refactor(canvas-button): fix button not updating on saving settings
marc-romu Aug 26, 2025
3ee12eb
feat(anthropic): add tool result encoding and decoding
marc-romu Aug 26, 2025
763690f
refactor(conversation-session): clear separation of concerns between …
marc-romu Aug 27, 2025
5ef3acb
ci: update supported AI providers list in about dialog
marc-romu Sep 15, 2025
bb64fc8
feat(chat-ui): migrate WebChatDialog to full WebView UI with JS-host …
marc-romu Sep 15, 2025
4ed0aec
refactor(webchat): fix duplicated messages in non-streaming and inval…
marc-romu Sep 16, 2025
de154a6
refactor(badges): fix style for replaced badge and fix showing invali…
marc-romu Sep 19, 2025
a854ef5
refactor(badges): fix additional badges not being displayed
marc-romu Sep 19, 2025
be806fe
refactor(tool-calls): fix loop tool calls
marc-romu Sep 19, 2025
37abb12
feat(cancellation): propagate cancellation on component removal, webc…
marc-romu Sep 19, 2025
7190198
refactor(api-models): fix mistralai not returning api list of models
marc-romu Sep 19, 2025
b62c22a
Revert "feat(cancellation): propagate cancellation on component remov…
marc-romu Sep 19, 2025
aca9a0f
refactor(webchat): fix tool calls
marc-romu Sep 19, 2025
e8258a6
docs(changelog)
marc-romu Sep 19, 2025
0d1713b
docs: corrected headers
marc-romu Sep 19, 2025
6fc350b
Update src/SmartHopper.Providers.OpenRouter/OpenRouterProviderSetting…
marc-romu Sep 19, 2025
3debcad
refactor(providers): invalid temperature check
marc-romu Sep 19, 2025
72fd2e1
Merge branch 'feature/1.0.0-anthropic-openrouter-providers' of https:…
marc-romu Sep 19, 2025
f35f0e0
refactor: fix copilot suggestions
marc-romu Sep 19, 2025
2d8d42e
docs(readme): readme redesign
marc-romu Sep 19, 2025
7d119ff
docs(readme): minimize html
marc-romu Sep 19, 2025
60690d9
feat(providers,ui,infra): Anthropic/OpenRouter providers, WebChat Web…
marc-romu Sep 19, 2025
7229818
docs(readme): version date
marc-romu Sep 19, 2025
a33e68c
docs(contributing): incorrect code block ending
marc-romu Sep 19, 2025
7f3bbcc
refactor(webchat): improvments in collapsible messages and autoscroll…
marc-romu Sep 20, 2025
c9c2632
refactor(webchat): special type error for policy messages to prevent …
marc-romu Sep 20, 2025
a489044
refactor(webchat): improved arrows for collapsible messages
marc-romu Sep 20, 2025
3d1aa04
refactor(interactions): added iaikeyedinteraction to standarize key c…
marc-romu Sep 20, 2025
23e4c45
refactor(webchat): ensure fidelity between conversation history and ui
marc-romu Sep 20, 2025
742af6a
feat(iairenderinteraction): new interface to specify rendering of int…
marc-romu Sep 20, 2025
37ee2cd
refactor(webchat): fix duplicated keys causing previous messages bein…
marc-romu Sep 21, 2025
4e9a7d0
refactor(canvas-assistant): use default Text2Text model instead of To…
marc-romu Sep 21, 2025
f5576b1
refactor(webchat): fix infinite attachment of messages
marc-romu Sep 21, 2025
0416987
refactor(mistral-ai): centralize interaction encoding to jtoken
marc-romu Sep 21, 2025
1a626fa
refactor(webchat): fix invalid call structure
marc-romu Sep 21, 2025
e48f3ae
feat(selection-context): new selection context provider
marc-romu Sep 21, 2025
11303e6
refactor(webchat): fix incorrect message order in UI and force tool-r…
marc-romu Sep 21, 2025
615f315
refactor(webchat): restore reasoning rendering in ui
marc-romu Sep 21, 2025
9f935a9
refactor(webchat): ensure same key for streamed text responses
marc-romu Sep 21, 2025
db039fa
refactor(tool-call): allow tool calls without arguments
marc-romu Sep 21, 2025
861b28d
refactor(webchat): rethought bubble key in webview for stability
marc-romu Sep 21, 2025
942c1c6
refactor(ai-tools): add safety check to prevent exceptions if argumen…
marc-romu Sep 21, 2025
65dcdf0
refactor(codeowners): added dev-md code owner
marc-romu Sep 21, 2025
dddd6ac
refactor(conversation-session): clear separation of concerns between …
marc-romu Sep 21, 2025
86cecae
refactor(aichat): fix duplicated history outputs
marc-romu Sep 21, 2025
6e24ad0
feat(persistent-data): add compatibility with lists and items
marc-romu Sep 21, 2025
d2ed397
refactor(conversation-session): rename OnPartial to OnInteractionComp…
marc-romu Sep 22, 2025
01d5e5d
ci: style and documentation updates
marc-romu Sep 22, 2025
bc4cecb
refactor(conversation-session): simplify logic and consistency tweaks
marc-romu Sep 27, 2025
ed5586a
refactor(conversation-session: prevent duplicated tool calls by id
marc-romu Sep 27, 2025
940daf9
refactor: improvements in webchat conversation-session and greeting m…
marc-romu Sep 27, 2025
24fa8c3
refactor: fixes
marc-romu Sep 27, 2025
86c2e50
refactor(conversation-session): unification of streaming and non-stre…
marc-romu Sep 27, 2025
03cd563
refactor: several code quality improvments
marc-romu Sep 28, 2025
afc053f
refactor(conversation-session): unified internal loop TurnLoopAsync f…
marc-romu Oct 3, 2025
fa840f1
Merge branch 'feature/1.0.0-webchat-improvements' of https://github.c…
marc-romu Oct 3, 2025
76f907f
refactor(ai-provider): ensure final slash at the end of base url for …
marc-romu Oct 4, 2025
4360e7f
refactor(ai-provider): centralized url normalization
marc-romu Oct 4, 2025
b43c8f5
refactor(conversation-session): several fixes to ensure consistency b…
marc-romu Oct 4, 2025
8ce2f62
feat(special-turns): new special turn api for greeting generation in …
marc-romu Oct 5, 2025
ca5a711
refactor(open-ai): fix issue with tool calls
marc-romu Oct 5, 2025
c953a8d
refactor(conversation-session): fixed failing to stream responses aft…
marc-romu Oct 5, 2025
a76b55f
refactor(providers): WIP fix issues with anthropic in tool processing…
marc-romu Oct 5, 2025
c835005
refactor(webchat): improved interaction identification keys
marc-romu Oct 5, 2025
a7d053f
refactor(webchat-observer): fix incorrect segmentation of interactions
marc-romu Oct 5, 2025
5e3897b
refactor(webchat): several fixes in conversation consistent surfacing…
marc-romu Oct 5, 2025
9caec88
refactor(conversation-session)
marc-romu Oct 5, 2025
fb7e826
refactor(settings): disable deepseek and openrouter streaming setting…
marc-romu Oct 6, 2025
7a8ae79
refactor(anthropic): fix tool use
marc-romu Oct 6, 2025
bb620b6
refactor(deepseek): fix tool calling
marc-romu Oct 6, 2025
3fce2b4
refactor(openrouter): fix openrouter api and tool calling
marc-romu Oct 6, 2025
9356428
refactor(openrouter-deepseek): add streaming compatibility and minor …
marc-romu Oct 6, 2025
465c0aa
ci(labels): added missing labels
marc-romu Oct 7, 2025
8109fdb
refactor(providers): added compatibility for reasoning streaming to m…
marc-romu Oct 7, 2025
08471df
refactor(providers): properly stream reasoning only interactions
marc-romu Oct 10, 2025
49f69da
refactor(generic-provider-settings-page)
marc-romu Oct 10, 2025
bd7dacd
refactor(web-chat-observer)
marc-romu Oct 10, 2025
2d357aa
refactor(webchat): Enhance conversation session and tool calling acro…
marc-romu Oct 11, 2025
7a2d090
chore: update development version date to 1.0.0-dev.251011
actions-user Oct 11, 2025
81ec656
ci(workflow): properly update badges
marc-romu Oct 11, 2025
9f01eac
chore: update development version date to 1.0.0-dev.251011 (#322)
marc-romu Oct 11, 2025
ada3da3
ci(workflow): properly update badges
marc-romu Oct 11, 2025
ddb3c09
Merge branch 'dev' of https://github.com/architects-toolkit/SmartHopp…
marc-romu Oct 11, 2025
a45a486
docs: update version badge for dev
actions-user Oct 11, 2025
2b227a6
docs: update version badge for dev to 1.0.0-dev.251011 (#323)
marc-romu Oct 11, 2025
8c0166e
docs
marc-romu Oct 11, 2025
f9f23a6
refactor(parsing-tools): compatibility with multiple encoding formats
marc-romu Oct 11, 2025
ea27f99
docs(changelog)
marc-romu Oct 11, 2025
bd0d978
refactor(regex): moved in-code regex pattern to compiled regex patter…
marc-romu Oct 11, 2025
4d0799f
fix(components): correct index parsing in AIListFilter component (#324)
marc-romu Oct 11, 2025
6af0cc8
feat(workflows): new action to automatically set ready-to-use badge t…
marc-romu Oct 11, 2025
793782a
ci(docs): added video links
marc-romu Oct 11, 2025
7a0c82d
ci(docs)
marc-romu Oct 11, 2025
e164d94
ci(docs): update logo
marc-romu Oct 11, 2025
1bc0d9a
ci(docs): add link to webpage
marc-romu Oct 11, 2025
630d2ca
ci(docs)
marc-romu Oct 11, 2025
c8b280a
ci(docs)
marc-romu Oct 11, 2025
5ff778f
docs: update documentation for 1.0.0-alpha release (#325)
marc-romu Oct 11, 2025
aea2db2
docs
marc-romu Oct 11, 2025
2bb4292
docs
marc-romu Oct 11, 2025
1e8ea0d
chore: prepare release 1.0.0-alpha with version update and code style…
actions-user Oct 11, 2025
f8923c1
chore: prepare release 1.0.0-alpha with version update and code style…
marc-romu Oct 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 25 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -229,3 +229,28 @@ dotnet_naming_style.begins_with_i.required_prefix = I
dotnet_naming_style.begins_with_i.required_suffix =
dotnet_naming_style.begins_with_i.word_separator =
dotnet_naming_style.begins_with_i.capitalization = pascal_case

#### StyleCop Analyzer Rules ####

# SA1633: File should have header
# Suppressed because we use a custom LGPL header format
dotnet_diagnostic.SA1633.severity = none

# CA1707: Remove underscore from member names
dotnet_diagnostic.CA1707.severity = none

# SA1124: Do not use regions
# Suppressed because regions are used to group related methods
dotnet_diagnostic.SA1124.severity = none

# IDE0051: Unused private members
dotnet_diagnostic.IDE0051.severity = warning

# IDE0052: Assigned but not used
dotnet_diagnostic.IDE0052.severity = warning

# CA1811: uncalled private code
dotnet_diagnostic.CA1811.severity = warning

# SA1210: Using directives should be ordered alphabetically by the namespaces
dotnet_diagnostic.SA1210.severity = error
33 changes: 17 additions & 16 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
# These owners will be the default owners for everything in
# the repo. They will be requested for review when someone
# opens a pull request.
* @marc-romu
* @marc-romu

# Protect the entire .github folder and all its contents
/.github/ @marc-romu
/.github/** @marc-romu
/.github/CODEOWNERS @marc-romu
/.github/ @marc-romu
/.github/** @marc-romu
/.github/CODEOWNERS @marc-romu

# Documentation
/README.md @marc-romu
/CHANGELOG.md @marc-romu
/LICENSE @marc-romu
/CONTRIBUTING.md @marc-romu
/README.md @marc-romu
/CHANGELOG.md @marc-romu
/LICENSE @marc-romu
/CONTRIBUTING.md @marc-romu
/RELEASE_CHECKLIST.md @marc-romu
/DEV.md @marc-romu

# Critical repository files
/.gitignore @marc-romu
/.gitattributes @marc-romu
/.windsurf/** @marc-romu
*.ps1 @marc-romu
/.gitignore @marc-romu
/.gitattributes @marc-romu
/.windsurf/** @marc-romu
*.ps1 @marc-romu

# Critical solution files
/*.sln @marc-romu
/NuGet.Config @marc-romu
/Solution.props @marc-romu
/*.sln @marc-romu
/NuGet.Config @marc-romu
/Solution.props @marc-romu
/Directory.Build.props @marc-romu
/Directory.Build.targets @marc-romu

# Yak package
/yak-package/** @marc-romu
/yak-package/** @marc-romu
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ body:
attributes:
label: Rhino Version
description: What version of Rhino are you using?
placeholder: e.g. RH8.13
placeholder: e.g. RH8.23
validations:
required: true

Expand All @@ -44,7 +44,7 @@ body:
attributes:
label: SmartHopper Version
description: What version of SmartHopper are you using?
placeholder: e.g. 0.0.0-dev.250101
placeholder: e.g. 1.0.0-alpha
validations:
required: true

Expand Down
120 changes: 43 additions & 77 deletions .github/actions/documentation/update-badges/action.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: 'Update Badges'
description: 'Update the version and status badges in README.md'
description: 'Update version and status badges in README.md (for-the-badge style only)'
inputs:
branch:
description: 'Branch name (for context)'
Expand All @@ -25,92 +25,58 @@ runs:
echo "Current version: $VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT

- name: Update version badge in README.md
- name: Update badges in README.md
id: update-badge
shell: bash
run: |
# Get the current version
VERSION="${{ steps.get-version.outputs.version }}"

echo "Current version from Solution.props: $VERSION"

# Format version for shields.io by encoding special characters
ENCODED_VERSION=$(echo "$VERSION" | sed 's/-/--/g' | sed 's/\./%2E/g')

# Determine color and status based on version

# Shields.io escaping: '-' -> '--', '_' -> '__', ' ' -> '_'
SHIELDS_VERSION=${VERSION//_/__}
SHIELDS_VERSION=${SHIELDS_VERSION//-/--}
SHIELDS_VERSION=${SHIELDS_VERSION// /_}

# Determine status color and text based on version suffix
STATUS_COLOR="brightgreen"
STATUS_TEXT="Stable"
if [[ $VERSION == *"-dev"* ]]; then
COLOR="brown"
STATUS="Unstable%20Development"
STATUS_COLOR="brown"
STATUS_TEXT="Unstable%20Development"
elif [[ $VERSION == *"-alpha"* ]]; then
COLOR="orange"
STATUS="Alpha"
STATUS_COLOR="orange"
STATUS_TEXT="Alpha"
elif [[ $VERSION == *"-beta"* ]]; then
COLOR="yellow"
STATUS="Beta"
STATUS_COLOR="yellow"
STATUS_TEXT="Beta"
elif [[ $VERSION == *"-rc"* ]]; then
COLOR="lightblue"
STATUS="Release%20Candidate"
else
COLOR="lightgreen"
STATUS="Stable"
STATUS_COLOR="purple"
STATUS_TEXT="Release%20Candidate"
fi

# Create new badge URLs
VERSION_BADGE_URL="https://img.shields.io/badge/version-$ENCODED_VERSION-$COLOR"
STATUS_BADGE_URL="https://img.shields.io/badge/status-$STATUS-$COLOR"

# Create badge markdown
VERSION_BADGE="[![Version]($VERSION_BADGE_URL)](https://github.com/architects-toolkit/SmartHopper/releases)"
STATUS_BADGE="[![Status]($STATUS_BADGE_URL)](https://github.com/architects-toolkit/SmartHopper/releases)"

echo "New version badge: $VERSION_BADGE"
echo "New status badge: $STATUS_BADGE"

BADGES_CHANGED=false

# Update README.md with new badges
if [[ -f "README.md" ]]; then
# Check if README contains version badge and if it needs updating
if grep -q "\[\!\[Version\]" README.md; then
echo "Found version badge in README"

# Extract current badge URL to check if color matches
CURRENT_VERSION_BADGE=$(grep -o "\[\!\[Version\](https://img\.shields\.io/badge/version[^)]*)" README.md || echo "")

# Check if the badge needs updating (different version or color)
if [[ "$CURRENT_VERSION_BADGE" != *"$ENCODED_VERSION"* || "$CURRENT_VERSION_BADGE" != *"-$COLOR"* ]]; then
sed -i "s|\[\!\[Version\](https://img\.shields\.io/badge/version[^)]*)|[![Version]($VERSION_BADGE_URL)|g" README.md
echo "Updated version badge"
BADGES_CHANGED=true
else
echo "Version badge is already up to date"
fi
else
echo "No version badge found in README to replace"
fi

# Check if README contains status badge and if it needs updating
if grep -q "\[\!\[Status\]" README.md; then
echo "Found status badge in README"

# Extract current badge URL to check if status or color matches
CURRENT_STATUS_BADGE=$(grep -o "\[\!\[Status\](https://img\.shields\.io/badge/status[^)]*)" README.md || echo "")

# Check if the badge needs updating (different status or color)
if [[ "$CURRENT_STATUS_BADGE" != *"$STATUS"* || "$CURRENT_STATUS_BADGE" != *"-$COLOR"* ]]; then
sed -i "s|\[\!\[Status\](https://img\.shields\.io/badge/status[^)]*)|[![Status]($STATUS_BADGE_URL)|g" README.md
echo "Updated status badge"
BADGES_CHANGED=true
else
echo "Status badge is already up to date"
fi
else
echo "No status badge found in README to replace"
fi

# Output whether badges were changed
echo "badges-changed=$BADGES_CHANGED" >> $GITHUB_OUTPUT
else
echo "README.md not found, skipping badge update"

echo "Target version badge: ${SHIELDS_VERSION} / ${STATUS_COLOR}"
echo "Target status badge: ${STATUS_TEXT} / ${STATUS_COLOR}"

if [[ ! -f "README.md" ]]; then
echo "README.md not found"
echo "badges-changed=false" >> $GITHUB_OUTPUT
exit 0
fi

# Update VERSION badge (for-the-badge format only)
# Pattern: https://img.shields.io/badge/version-{VERSION}-{COLOR}?style=for-the-badge
sed -i -E "s|(https://img\.shields\.io/badge/version-)[^?]+-([a-zA-Z]+)(\?style=for-the-badge)|\1${SHIELDS_VERSION}-${STATUS_COLOR}\3|" README.md

# Update STATUS badge (for-the-badge format only)
# Pattern: https://img.shields.io/badge/status-{TEXT}-{COLOR}?style=for-the-badge
sed -i -E "s|(https://img\.shields\.io/badge/status-)[^?]+-([a-zA-Z]+)(\?style=for-the-badge)|\1${STATUS_TEXT}-${STATUS_COLOR}\3|" README.md

# Check if any changes were made
if git diff --quiet README.md 2>/dev/null; then
echo "Badges already up to date"
echo "badges-changed=false" >> $GITHUB_OUTPUT
else
echo "Badges updated successfully"
echo "badges-changed=true" >> $GITHUB_OUTPUT
fi
44 changes: 44 additions & 0 deletions .github/actions/documentation/update-ready-badge/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: "Update Ready Badge"
description: "Update the Ready to use badge in README.md to a specific status and color"
author: "SmartHopper"

inputs:
status:
description: "Badge status text (e.g., YES, NO)"
required: false
default: "YES"
color:
description: "Badge color (e.g., brightgreen, red, brown)"
required: false
default: "brightgreen"
file:
description: "Path to README file"
required: false
default: "README.md"

runs:
using: "composite"
steps:
- name: Update Ready badge in README
shell: bash
run: |
set -euo pipefail
FILE="${{ inputs.file }}"
STATUS="${{ inputs.status }}"
COLOR="${{ inputs.color }}"

if [[ ! -f "$FILE" ]]; then
echo "File not found: $FILE" >&2
exit 1
fi

# Replace shields.io 'ready_to_use-<status>-<color>' portion, keeping query params
# Supports any current value and preserves surrounding markdown link
pattern='(https://img\.shields\.io/badge/ready_to_use-)[^?-]+-[^?]+(\?style=for-the-badge)'
replacement="\\1${STATUS}-${COLOR}\\2"

# Use perl for cross-platform inline regex with capture groups
perl -0777 -pe "s#$pattern#$replacement#g" "$FILE" > "$FILE.tmp"
mv "$FILE.tmp" "$FILE"

echo "Updated Ready badge to: status=$STATUS color=$COLOR in $FILE"
21 changes: 21 additions & 0 deletions .github/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@
- name: "provider: DeepSeek"
color: "000"
description: "Issues related to the DeepSeek provider"
- name: "provider: OpenRouter"
color: "000"
description: "Issues related to the OpenRouter provider"
- name: "provider: Anthropic"
color: "000"
description: "Issues related to the Anthropic provider"

# Scope Labels
- name: "scope: Settings"
Expand All @@ -141,12 +147,21 @@
- name: "scope: AI Tools"
color: "000"
description: "Issues related to the AI tools"
- name: "scope: AI Calls"
color: "000"
description: "Issues related to the AI Calls logic"
- name: "scope: Provider Manager"
color: "000"
description: "Issues related to the Provider Manager"
- name: "scope: Context Manager"
color: "000"
description: "Issues related to the Context Manager"
- name: "scope: Model Manager"
color: "000"
description: "Issues related to the Model Manager"
- name: "scope: Tool Manager"
color: "000"
description: "Issues related to the Tool Manager"
- name: "scope: UI"
color: "000"
description: "Issues related to the UI features"
Expand All @@ -156,3 +171,9 @@
- name: "scope: Component Base"
color: "000"
description: "Issues related to the Component Base"
- name: "scope: Conversation Session"
color: "000"
description: "Issues related to the Conversation Session logic"
- name: "scope: Canvas Assistant"
color: "000"
description: "Issues related to the Canvas Assistant logic"
8 changes: 7 additions & 1 deletion .github/workflows/chore-version-main-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,17 @@ jobs:
with:
new-version: ${{ steps.strip-date.outputs.new-version }}

# Update badges to match the new version
- name: Update badges
id: update-badges
if: steps.strip-date.outputs.new-version != steps.get-version.outputs.version
uses: ./.github/actions/documentation/update-badges

- name: Commit and push changes
if: steps.strip-date.outputs.new-version != steps.get-version.outputs.version
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add Solution.props
git add Solution.props README.md
git commit -m "chore: remove date from version for main release"
git push origin HEAD:${{ github.event.pull_request.head.ref }}
43 changes: 43 additions & 0 deletions .github/workflows/dev-ready-badge-reset.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: ♻️ Reset Ready Badge on Dev Merges (non-release)

on:
pull_request:
types: [closed]

permissions:
contents: write

jobs:
reset-ready-badge:
if: >-
${{ github.event.pull_request.merged == true &&
github.event.pull_request.base.ref == 'dev' &&
!startsWith(github.event.pull_request.head.ref, 'release/') }}
runs-on: ubuntu-latest
steps:
- name: Checkout dev
uses: actions/checkout@v4
with:
ref: dev

- name: Set up Git user
run: |
git config user.name "github-actions"
git config user.email "action@github.com"

- name: Set Ready badge to NO (brown)
uses: ./.github/actions/documentation/update-ready-badge
with:
status: NO
color: brown
file: README.md

- name: Commit and push if changed
run: |
if ! git diff --quiet README.md; then
git add README.md
git commit -m "docs(readme): reset Ready-to-use badge to NO on dev merge (non-release)"
git push origin dev
else
echo "No changes to README.md; skipping commit"
fi
Loading
Loading