Skip to content
Draft
Show file tree
Hide file tree
Changes from 250 commits
Commits
Show all changes
356 commits
Select commit Hold shift + click to select a range
8237fda
refactor(download): complete almost workflows for PrepareImages.cs
thnhmai06 Mar 17, 2026
89aa122
[skip ci] refactor!(backend): refactoring to Clean Architecture (not …
thnhmai06 Mar 20, 2026
24167ea
[skip ci] chore: update YamlSerializer to use direct YamlDotNet types
thnhmai06 Mar 20, 2026
764a28c
refactor!(backend): Merge Framework into Domain, Application, Infastr…
thnhmai06 Mar 22, 2026
118f29e
chore(backend): Make ReadOnlyWorksheet constructor internal
thnhmai06 Mar 22, 2026
9999e58
feat(backend): complete generating activities and clean architecture …
thnhmai06 Mar 30, 2026
ff700d6
chore(backend): improve business logic and field naming on sheet, sli…
thnhmai06 Mar 30, 2026
9572194
feat: add GenerationWorkflow workflow, rename Generating -> Generation
thnhmai06 Apr 5, 2026
f168e0e
feat(backend)!: add ScanningService, refactoring Slide entities
thnhmai06 Apr 7, 2026
06d36e7
refactor(registry): Transition to a reference-counted registry system
thnhmai06 Apr 9, 2026
7e7e0cf
feat: Refactor resource management and concurrency control in generat…
thnhmai06 Apr 9, 2026
c8e2b0b
chore(backend): rename module names and move cloud structure
thnhmai06 Apr 9, 2026
f864f4b
chore(backend): update packages
thnhmai06 Apr 9, 2026
c9f07c5
refactor: refactoring Images module
thnhmai06 Apr 16, 2026
c3f0100
[skip ci] chore(backend): cleanup and reformat
thnhmai06 Apr 16, 2026
9a78d9e
refactor(workflows): refactoring workflows models to Application Layer
thnhmai06 Apr 16, 2026
8cc6e48
refactor(workflows): Rearchitect concurrency and processing in Genera…
thnhmai06 Apr 21, 2026
386613a
refactor(workflows): Decouple Application layer from Elsa workflow en…
thnhmai06 Apr 23, 2026
a3a9b29
docs: add comprehensive XML documentation and minor refactorings
thnhmai06 Apr 23, 2026
f2f326b
chore(backend): clean up and reformat code
thnhmai06 Apr 23, 2026
158bef7
refactor(generating): resolve instructions per-row instead of pre-fla…
thnhmai06 Apr 24, 2026
ac906ef
refactor(workflows)!: transition to custom C# DSL and WorkflowCore
thnhmai06 Apr 28, 2026
9718aac
refactor: reorganize application core features into Modules directory
thnhmai06 Apr 28, 2026
562644a
[skip ci] chore(backend): reformat and cleanup code
thnhmai06 Apr 28, 2026
be92273
[skip ci] chore: Update Instructions
thnhmai06 Apr 29, 2026
67c41a5
refactor(workflows)!: transition to variable-based persistence and ro…
thnhmai06 Apr 29, 2026
1c83aaf
[skip ci] chore(backend): reformat and cleanup code
thnhmai06 Apr 29, 2026
076e91d
refactor(infrastructure): Transition to Syncfusion libraries for slid…
thnhmai06 Apr 30, 2026
858c112
refactor(workflows): extract ScanningWorkflow and remove WorkflowTask…
thnhmai06 Apr 30, 2026
23ab9a2
refactor(workflows): replace centralized interpreter with self-execut…
thnhmai06 Apr 30, 2026
3c3fbc1
refactor(workflows)!: migrate from custom DSL to direct WorkflowCore …
thnhmai06 May 1, 2026
c12803b
feat(setting): export setting service
thnhmai06 May 1, 2026
b33d9f9
refactor!: restructure solution into feature-based projects and stand…
thnhmai06 May 2, 2026
3275b8b
refactor(images,slides): adopt MagickImage-first architecture and sta…
thnhmai06 May 2, 2026
1bb2f88
refactor(workflows)!: (not done) rebuild generation pipeline with str…
thnhmai06 May 3, 2026
ed87814
refactor(generating): restructure Recipe model to use node-based mapp…
thnhmai06 May 3, 2026
f0dfe0a
feat(generating): add fallback image support and simplify ROI resolution
thnhmai06 May 3, 2026
abf7e64
refactor(identifiers): standardize naming and adopt strongly typed mo…
thnhmai06 May 3, 2026
330bc0b
refactor(generating): restructure workflow tasks
thnhmai06 May 4, 2026
f20c59b
feat(logging): introduce database-backed logging and replace in-memor…
thnhmai06 May 4, 2026
362f887
docs: add comprehensive XML documentation and standardize extension m…
thnhmai06 May 4, 2026
e71940e
docs: update architectural guidelines and AI assistant instructions
thnhmai06 May 4, 2026
209b7f1
refactor(workflows): centralize workflow-scoped logging in Generating…
thnhmai06 May 4, 2026
30c4eed
refactor: improve stability, immutability, and concurrency management
thnhmai06 May 4, 2026
0f50188
refactor(pipelines): rename Services project to Pipelines and update …
thnhmai06 May 4, 2026
f1769f1
feat(logging): add Serilog configuration and logging paths
thnhmai06 May 5, 2026
b8b0896
refactor: update namespaces and improve code structure for document h…
thnhmai06 May 5, 2026
a945f2a
refactor: reorganize document handling and update namespaces
thnhmai06 May 5, 2026
32361f7
feat(ipc): introduce JSON-RPC sidecar and refactor settings to immuta…
thnhmai06 May 5, 2026
3a4e173
feat(ipc): implement JSON-RPC sidecar and enhance logging setup
thnhmai06 May 5, 2026
af9e4aa
[skip ci] docs: add documents written by AI slop
thnhmai06 May 5, 2026
b78f31a
chore: cleanup and reformat code
thnhmai06 May 5, 2026
c4c75a0
[skip ci] chore: Create LICENSE
thnhmai06 May 5, 2026
29385b3
[skip ci] chore: Rename namespace and project name
thnhmai06 May 5, 2026
e4aeb38
chore: add copyrights to source code, cleanup and reformat
thnhmai06 May 5, 2026
7a44afc
chore: update package
thnhmai06 May 6, 2026
4d86e66
[skip ci] docs: restructure and expand bilingual documentation suite
thnhmai06 May 6, 2026
c7fec7c
test: Implemented Unit Test for backend.
Vanillinium May 6, 2026
a476883
chore: reorganize test project, update dependencies, and overhaul git…
thnhmai06 May 6, 2026
4d45d81
feat: add security, hashing, and logging modules; refactor directory …
thnhmai06 May 7, 2026
a425842
Pull develop/backend into backend folder
thnhmai06 May 7, 2026
96a7c3b
chore: remove backend submodule and .gitmodules
thnhmai06 May 7, 2026
eba57c2
chore: clean old files
thnhmai06 May 7, 2026
cf61be7
Sync with 'develop/backend'
thnhmai06 May 7, 2026
93f887b
chore: remove frontend directory to prepare for subtree refresh
thnhmai06 May 7, 2026
618721c
Squashed 'frontend/' content from commit 8aeca35
thnhmai06 May 7, 2026
d25e17a
Merge commit '618721cd2bff2644f968c0819a6650ce004be815' as 'frontend'
thnhmai06 May 7, 2026
9537439
tests: remove ordinary tests (will add later, sorry cuong nha)
thnhmai06 May 7, 2026
c3b43fb
refactor(backend)!: migrate to Monolith Clean Architecture and enhanc…
thnhmai06 May 13, 2026
72f5e6d
chore(backend): reformat and cleanup code
thnhmai06 May 13, 2026
109fde4
feat(generating): implement flexible asset path control and refactor …
thnhmai06 May 14, 2026
52f5498
feat(backend): implement asset deduplication and enhance logging system
thnhmai06 May 14, 2026
a132664
docs(backend): update documents
thnhmai06 May 14, 2026
7140550
feat(generating): add instance query, listing, and deletion
thnhmai06 May 14, 2026
f30682f
fix(core): correct log paths and enhance license validation
thnhmai06 May 14, 2026
09a410a
chore: update dev environment and coding standards
thnhmai06 May 14, 2026
13d4e82
chore(backend): reformat and cleanup code
thnhmai06 May 14, 2026
6f538a8
chore(generating): Move Registration into Injection
thnhmai06 May 14, 2026
772d080
feat(generating): add recipe CRUD IPC APIs and use recipe by id
thnhmai06 May 15, 2026
d5032ad
feat(recipe): implement recipe export and import functionality
thnhmai06 May 15, 2026
4ebc9ba
feat(acquisition): implement multi-cloud image acquisition and detection
thnhmai06 May 19, 2026
b473d22
feat(recipe): implement recipe export/import and workflow enhancements
thnhmai06 May 19, 2026
b9170a6
feat(utilities): add SQLite connection factory and helper utilities
thnhmai06 May 19, 2026
3d04456
build!: reorganize project structure into src/ directory
thnhmai06 May 19, 2026
3727298
test: add comprehensive unit and integration test suite
thnhmai06 May 19, 2026
8728af3
chore: update local workspace and IDE settings
thnhmai06 May 19, 2026
dad6b96
init(frontend): Replace the frontend with new Design System
thnhmai06 May 19, 2026
95d5373
refactor(backend): overhaul image processing and cloud asset acquisition
thnhmai06 May 27, 2026
36d8bc4
refactor(logging): migrate to MEL and add structured logging across m…
thnhmai06 May 27, 2026
42072d4
docs: relocate Documents/ to docs/ and refresh module references
thnhmai06 May 27, 2026
60cfaf9
refactor(coordinator): decouple GateLocker via generic enum and reloc…
thnhmai06 May 29, 2026
a608479
refactor(utilities): flatten Helper/ and Database/ sub-namespaces
thnhmai06 May 29, 2026
a82d80f
style(backend): normalize whitespace and organize solution folders
thnhmai06 May 29, 2026
8f20c73
build(solution): group modules into Foundation/Domain/Application tiers
thnhmai06 May 29, 2026
46ad484
refactor(cryptography): extract IHasher and convert Sha256Hasher to i…
thnhmai06 May 29, 2026
8a1eb4d
refactor(logging): overhaul module and split Ipc Program into partials
thnhmai06 May 30, 2026
d91fd47
refactor: rename Ipc to Stdio and add single-instance lock
thnhmai06 May 30, 2026
06f146d
ci: add GitHub Actions workflow and Taskfile automation
thnhmai06 May 30, 2026
e55e8fa
fix(ci): per-project test matrix on Ubuntu, fix dir not found
thnhmai06 May 30, 2026
2b48085
fix(ci): add build gate, per-project tests on Ubuntu
thnhmai06 May 30, 2026
8078050
feat(ci): add osx-arm64, osx-x64, win-arm64 platform support
thnhmai06 May 30, 2026
cb94705
ci(backend): add GitHub Packages auth and update macOS runners
thnhmai06 May 31, 2026
631f87b
ci(backend): selective test matrix, NuGet cache, and docs sync
thnhmai06 May 31, 2026
ae9f8d4
docs: sync Ipc → Stdio rename and add GitHub Packages setup
thnhmai06 May 31, 2026
5eaef4f
[CodeFactor] Apply fixes
code-factor May 31, 2026
240e7ca
ci(backend): skip CI for non-code commits
thnhmai06 May 31, 2026
11b9212
Merge pull request #16 from thnhmai06/develop-cf-autofix
thnhmai06 May 31, 2026
9a96556
Remove frontend
thnhmai06 May 31, 2026
9bacaec
Merge branch 'develop' of https://github.com/thnhmai06/SlideGenerator…
thnhmai06 May 31, 2026
de6151f
refactor: reduce cyclomatic complexity in complex methods
thnhmai06 May 31, 2026
191967b
docs: move LICENSE and CODE_OF_CONDUCT to root folder
thnhmai06 May 31, 2026
cdb684a
Update LICENSE file
thnhmai06 May 31, 2026
d44c6c1
chore: switch license from AGPLv3 to Apache 2.0
thnhmai06 May 31, 2026
0c97f46
[full ci] test: add CencellationToken, remove ConfigureAwait(false) o…
thnhmai06 May 31, 2026
32d83e3
chore: reclassify modules — Settings→Domain, Document+Image→Foundation
thnhmai06 May 31, 2026
a108564
[full ci] feat(image): add FaceDetectorPool for concurrent face detec…
thnhmai06 May 31, 2026
5e9a02d
ci: replace backend-ci with build, add dotCover and Qodana
thnhmai06 May 31, 2026
2d18e97
[full ci] fix(ci): fix Qodana creds, dotCover args, build.yml path tr…
thnhmai06 May 31, 2026
140bf48
ci: replace dotCover with coverlet and ReportGenerator
thnhmai06 May 31, 2026
c216c08
[full ci] ci(qodana): configure scan options, profile, and failure co…
thnhmai06 May 31, 2026
6ea90b0
fix(security): resolve 66 CodeQL path-injection and resource-injectio…
thnhmai06 May 31, 2026
e9d2a7c
docs(claude): document CodeQL security patterns and invariants
thnhmai06 May 31, 2026
7c83734
[skip ci] init: init codegraph
thnhmai06 May 31, 2026
ad6a073
ci(codeql): switch to advanced setup with paths-ignore config
thnhmai06 May 31, 2026
20a8610
ci: add workflow_dispatch trigger for codeql and backend-build
thnhmai06 May 31, 2026
a07d357
refactor(image): redesign ROI/crop pipeline and migrate to NetVips
thnhmai06 Jun 1, 2026
a5ca9e9
build(document): replace Confuser.MSBuild with Obfuscar; harden licen…
thnhmai06 Jun 2, 2026
0cf0a1e
feat(settings): add performance gate auto-calibration
thnhmai06 Jun 2, 2026
b9f0f95
feat(settings): add --portable mode and reorganize DB paths under Dat…
thnhmai06 Jun 2, 2026
45a9332
refactor(recipe): derive ZipImportRules extensions from BookType/Pres…
thnhmai06 Jun 2, 2026
e81fbf3
refactor: dissolve Cryptography module; move SHA-256 to Utilities
thnhmai06 Jun 3, 2026
e690a2b
fix(recipe): enable WAL journal mode on Recipes SQLite at startup
thnhmai06 Jun 3, 2026
dfa6096
refactor(settings): centralize app metadata in NameAndPaths.Application
thnhmai06 Jun 3, 2026
91189d3
fix(utilities): fix HardLink P/Invoke entry point for Linux
thnhmai06 Jun 3, 2026
cec843e
refactor(recipe): split RecipeRepository, move summary models, implem…
thnhmai06 Jun 4, 2026
18d6468
chore: reformat docs, configs, and IDE settings
thnhmai06 Jun 6, 2026
4d8a7f3
feat(recipe): finalize graph schema and implement *.recipe package I/O
thnhmai06 Jun 6, 2026
a539a7d
chore(copyright): remove trailing space from copyright template
thnhmai06 Jun 6, 2026
b93ba3c
ci(backend): split backend workflow and reuse base artifacts
thnhmai06 Jun 6, 2026
4830f2a
chore(ci): reformat and cleanup ci script
thnhmai06 Jun 7, 2026
f24074f
refactor: move Stdio to Host folder and clean up Document/Summarization
thnhmai06 Jun 7, 2026
2fa79fa
chore: update packages
thnhmai06 Jun 27, 2026
2f26930
ci(backend): fix global.json SDK version and bump actions
thnhmai06 Jun 27, 2026
110b90b
refactor(recipe): embed WorksheetNode/SlideNode inside parent contain…
thnhmai06 Jun 28, 2026
b5bbb3e
test(document): add TextComposer data-driven integration tests and fi…
thnhmai06 Jun 28, 2026
ec73eaf
wip(generator): redesign Progress/Logging into Request/Job/Row scopes
thnhmai06 Jul 21, 2026
fd96c92
chore: remove claude skills
thnhmai06 Aug 11, 2026
6685760
docs(generator): update CLAUDE.md and docs for Request/Job/Row Progre…
thnhmai06 Aug 11, 2026
6d2556c
refactor(cloud): flatten Clean Architecture layers into functional fo…
thnhmai06 Aug 12, 2026
77267cf
refactor(settings): flatten Clean Architecture layers into functional…
thnhmai06 Aug 12, 2026
ad536df
refactor(summarization): flatten Clean Architecture layers into funct…
thnhmai06 Aug 12, 2026
7b46757
refactor(document): flatten Clean Architecture layers into functional…
thnhmai06 Aug 12, 2026
67ef1ec
refactor(image): flatten Clean Architecture layers into functional fo…
thnhmai06 Aug 12, 2026
86afc7c
refactor(recipe): flatten Clean Architecture layers into functional f…
thnhmai06 Aug 12, 2026
db81e40
refactor(generator): flatten Clean Architecture layers into functiona…
thnhmai06 Aug 12, 2026
2883f0c
fix(image): repath hardcoded YuNet.onnx model path after flatten
thnhmai06 Aug 12, 2026
52e8d49
docs(generator): update CLAUDE.md for flattened folder structure
thnhmai06 Aug 12, 2026
17b0610
refactor(image): merge Entities/ into Models/
thnhmai06 Aug 12, 2026
9173580
refactor(cloud): merge single-impl ICloudClient into Services/
thnhmai06 Aug 12, 2026
f1d4859
refactor: reorganize modules by feature (Phase 1)
thnhmai06 Aug 12, 2026
f46d763
wip: partial flatten of Document Abstractions into Adapters/Services
thnhmai06 Aug 12, 2026
30b66ff
chore: pre-resolve merge overlap by taking Phase 1 reorg wholesale
thnhmai06 Aug 12, 2026
23005c2
chore: remove stale duplicate old-layout Summarization files after pr…
thnhmai06 Aug 12, 2026
a867f54
Merge branch 'worktree-agent-ab8722439cbd42f94' into develop
thnhmai06 Aug 12, 2026
83e50cd
refactor(phase2): bước 1 - Recipe bỏ Graph, dùng composition thuần (M…
thnhmai06 Aug 12, 2026
56d39b6
refactor(phase2): bước 2-9 - bỏ WorkflowCore, tự viết JobRunner 4-phase
thnhmai06 Aug 12, 2026
954e6d3
refactor(phase2): bước 12 - sửa cref doc comment còn sót trỏ tới Node…
thnhmai06 Aug 12, 2026
b7bec8c
docs: update CLAUDE.md for feature-folder reorg + JobRunner architecture
thnhmai06 Aug 12, 2026
4a74e07
refactor(document,image): merge interface+impl+enum pairs into single…
thnhmai06 Aug 13, 2026
1b7c6bb
refactor: rename providers to Opener/Pool, sync interface+impl merges
thnhmai06 Aug 13, 2026
907264e
refactor(settings,logging): feature-folder split, merge interface pairs
thnhmai06 Aug 13, 2026
a756f03
refactor(recipe,generator): flatten into feature folders
thnhmai06 Aug 13, 2026
b932275
docs: sync CLAUDE.md with Recipe/Generator feature-folder reorg
thnhmai06 Aug 13, 2026
1362191
feat(db): add DbUp-managed schema migrations for Data.db
thnhmai06 Aug 13, 2026
820e887
refactor: split identifier files into Identifiers/ subfolders, cleanup
thnhmai06 Aug 13, 2026
0fcba09
Merge branch 'worktree-dbup-retry2' into develop
thnhmai06 Aug 13, 2026
01a62ee
fix(recipe): restore null-safety on imported.Mappings after merge
thnhmai06 Aug 13, 2026
83770b9
refactor(settings,recipe): drop YamlDotNet and SharpZipLib for BCL eq…
thnhmai06 Aug 13, 2026
87b1f9f
refactor(settings): move user settings to Data/UserSettings.json
thnhmai06 Aug 13, 2026
cc1da32
refactor(recipe): extract package export/import into RecipePackageSer…
thnhmai06 Aug 13, 2026
b76d248
refactor(recipe): reorganize into feature folders, rewrite package se…
thnhmai06 Aug 13, 2026
6991283
refactor(summarizer): rename Summarization to Summarizer
thnhmai06 Aug 13, 2026
d338485
refactor(generator): rename JobRecord/Status to JobSnapshot/JobStatus
thnhmai06 Aug 13, 2026
320f6ff
refactor(generator): extract Job Engine from JobRunner
thnhmai06 Aug 14, 2026
ccb119d
refactor(generator): rename Job/ to Jobs/, pluralize Workload/
thnhmai06 Aug 14, 2026
454d7cb
chore: reformat and cleanup code
thnhmai06 Aug 14, 2026
19a2308
fix(image): allow YuNetPool to inject detector factory for testing
thnhmai06 Aug 14, 2026
ffa67c5
fix(generator): keep template presentation alive through AddSlide
thnhmai06 Aug 14, 2026
3e00b1d
fix(document): recurse into grouped shapes on a slide
thnhmai06 Aug 14, 2026
c25ec64
fix(document): correct Shape.Bounds unit conversion
thnhmai06 Aug 14, 2026
d45b5d9
build(document): pin Syncfusion package versions
thnhmai06 Aug 14, 2026
7868a47
test(recipe): un-skip export/import round-trip test
thnhmai06 Aug 14, 2026
bc14df0
test(generator): add real end-to-end SlideGenerationWorkload test
thnhmai06 Aug 14, 2026
1916623
refactor(image): register IFaceDetector in Image's own module
thnhmai06 Aug 14, 2026
8f69e57
fix(stdio): correct RecipeHandler.QueryAsync return type
thnhmai06 Aug 14, 2026
3ce8761
docs(stdio): fix ProgressCoalescer doc-comment grammar
thnhmai06 Aug 14, 2026
cf930bd
build(document): pin Syncfusion versions in Document.Tests too
thnhmai06 Aug 14, 2026
7fb6879
test(image): remove dead CreateTrackingDetector helper
thnhmai06 Aug 14, 2026
5e44fb2
chore: update JetBrains solution user settings
thnhmai06 Aug 14, 2026
4f7608e
chore: move backend to repository root
thnhmai06 Aug 14, 2026
e977d5d
ci: collapse backend CI into single pwsh matrix workflow
thnhmai06 Aug 14, 2026
4160c8e
fix(image): reject non-positive sizes in crop utilities
thnhmai06 Aug 14, 2026
16611f1
test(image): wire concurrency tracker into YuNetPool tests
thnhmai06 Aug 14, 2026
c732ba2
fix(logging): correct Location scope-path doc
thnhmai06 Aug 14, 2026
176567c
test(fixtures): download face fixtures into the source tree
thnhmai06 Aug 14, 2026
1bb835c
build(generator): seed face fixture before build, skip when absent
thnhmai06 Aug 14, 2026
41db3d8
build(tests): drop coverlet.collector from test projects
thnhmai06 Aug 14, 2026
8b26c68
test(jobs): align JobEngine tests with the engine API
thnhmai06 Aug 14, 2026
f35a963
test(recipe): align repository tests with the flat Recipe model
thnhmai06 Aug 14, 2026
a026a01
test(image): fix namespaces and rename InfrastructureUtilitiesTests
thnhmai06 Aug 14, 2026
826f5c3
test(logging): rewrite file-logger tests for the monolith workload
thnhmai06 Aug 14, 2026
0f61825
test(cloud): rename resolver tests to ResolveAsync
thnhmai06 Aug 14, 2026
80fe580
test: finish XML docs and thread cancellation tokens
thnhmai06 Aug 14, 2026
680b01a
test(generator): skip integration test without Syncfusion license
thnhmai06 Aug 14, 2026
8541036
refactor(generator): drop unused ct param from image edit helpers
thnhmai06 Aug 14, 2026
3e5e61c
feat(desktop): replace Stdio JSON-RPC sidecar with Avalonia desktop host
thnhmai06 Aug 14, 2026
a36d8a9
feat(desktop): polish startup banner and build tooling
thnhmai06 Aug 14, 2026
d55ea15
chore(tests): update test dependencies to latest versions
thnhmai06 Aug 15, 2026
5f79644
test(recipe): pass cancellation tokens to async entry streams and upd…
thnhmai06 Aug 16, 2026
d8ab01c
chore(global): add test runner configuration to global.json
thnhmai06 Aug 16, 2026
c612a93
chore(deps): update StyleCop.Analyzers to 1.1.118 in Jobs project
thnhmai06 Aug 16, 2026
1c694c2
chore(global): fix misplaced test runner configuration in global.json
thnhmai06 Aug 16, 2026
02c5313
fix(tests): add MTP TRX report support
thnhmai06 Aug 16, 2026
94c8c11
Add Logo assets [skip ci]
thnhmai06 Aug 18, 2026
36be005
feat(desktop): build SlideGenerator V2 frontend through P4.3 (Shell, …
thnhmai06 Aug 24, 2026
030faf0
feat(desktop): add text-binding and worksheet-source editors (P4.3)
thnhmai06 Aug 24, 2026
2914d60
feat(desktop): assemble Recipe editor coordinator (P4.4 partial)
thnhmai06 Aug 24, 2026
73ec033
fix(desktop): fix stale-projection bug, drop fake dirty flag, add map…
thnhmai06 Aug 24, 2026
e8f4421
feat(desktop): add shape inspector for ROI order and fallback image (…
thnhmai06 Aug 24, 2026
56a6f00
feat(desktop): add template picker for new mapping creation
thnhmai06 Aug 24, 2026
37ada3a
feat(desktop): finish P4.4 canvas double-click, add P4.6 save/dirty/v…
thnhmai06 Aug 25, 2026
30d5be5
feat(desktop): add P4.5 Guided mode, fix Save/SaveAndRun Ambiguous ga…
thnhmai06 Aug 25, 2026
445beef
feat(desktop): add P5 Settings page (Appearance/Performance/Network/A…
thnhmai06 Aug 25, 2026
a17327e
fix(desktop): live-refresh language switch in TrExtension
thnhmai06 Aug 25, 2026
4554473
feat(desktop): add keyboard shortcuts (P5 task 36)
thnhmai06 Aug 25, 2026
b4ced5f
fix(desktop): wire ReducedMotion setting, drop em-dashes from UI stri…
thnhmai06 Aug 25, 2026
5f3fa6b
fix(desktop): fix theme-switch and startup-crash threading bugs, add …
thnhmai06 Aug 26, 2026
cf5dc7e
feat(desktop): add custom titlebar shell with nav pill and About dest…
thnhmai06 Aug 26, 2026
6d6a43f
feat(desktop): add theme-reveal animation, composite page transition,…
thnhmai06 Aug 26, 2026
48d4742
feat(desktop): migrate i18n keys to dot-key convention, extract remai…
thnhmai06 Aug 27, 2026
dee98c8
feat(desktop): add Recipes detail-pane stat chips and Saved/Unsaved b…
thnhmai06 Aug 27, 2026
078c470
feat(desktop): polish recipe editor canvas/inspector/guided stepper (…
thnhmai06 Aug 27, 2026
52823be
feat(desktop): polish TemplatePicker/RunDialog, add ConfirmDialog dan…
thnhmai06 Aug 27, 2026
e5c95c3
feat(generator,desktop): add TotalRows job progress contract, wire Ru…
thnhmai06 Aug 27, 2026
3c8eca3
feat(desktop): build About page with live GitHub data, polish Setting…
thnhmai06 Aug 27, 2026
39e1258
test(desktop): activate Avalonia headless view smoke tests, remove Pl…
thnhmai06 Aug 27, 2026
b4604c3
test(desktop): add VM/service logic tests for stats, TotalRows, About…
thnhmai06 Aug 27, 2026
3f07330
fix(desktop): darken dark-theme AccentMutedBrush, fix live nav-pill/a…
thnhmai06 Aug 27, 2026
413a37f
Add UI/UX concepts
thnhmai06 Sep 1, 2026
5883df0
docs: add SlideGenerator V2 domain reference for UI/UX design
thnhmai06 Sep 2, 2026
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
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .codegraph/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# CodeGraph data files — local to each machine, not for committing.
# Ignore everything in .codegraph/ except this file itself, so transient
# files (the database, daemon.pid, sockets, logs) never show up in git.
*
!.gitignore
18 changes: 18 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
root = true

[*.cs]
# Prefer one standalone top-level type per file on backend.
# Nested composite types inside their parent are allowed.
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.DocumentationRules.severity = none
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.LayoutRules.severity = none
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.MaintainabilityRules.severity = none
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.NamingRules.severity = none
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.OrderingRules.severity = none
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.ReadabilityRules.severity = none
dotnet_analyzer_diagnostic.category-StyleCop.CSharp.SpacingRules.severity = none
dotnet_diagnostic.SA0001.severity = none
dotnet_diagnostic.SA1402.severity = suggestion

[tests/**/*.cs]
# Apply the same standalone-type convention for backend test code.
dotnet_diagnostic.SA1402.severity = suggestion
1 change: 1 addition & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SYNCFUSION_LICENSE_KEY= # Syncfustion License Key
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# These are supported funding model platforms

github: [thnhmai06]
github: [ thnhmai06 ]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
Expand Down
4 changes: 4 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: "SlideGenerator CodeQL Config"
paths-ignore:
- "tests/**"
- "scripts/**"
90 changes: 0 additions & 90 deletions .github/workflows/build.yml

This file was deleted.

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

on:
workflow_dispatch:
push:
paths:
- "src/**"
- "tests/**"
- "Directory.Build.props"
- "Directory.Packages.props"
- "global.json"
- "nuget.config"
- "*.slnx"
- "Taskfile.yml"
- ".github/workflows/ci.yml"
pull_request:
types: [ opened, synchronize, reopened ]
paths:
- "src/**"
- "tests/**"
- "Directory.Build.props"
- "Directory.Packages.props"
- "global.json"
- "nuget.config"
- "*.slnx"
- "Taskfile.yml"
- ".github/workflows/ci.yml"
release:
types: [ published ]

permissions:
contents: read
actions: read
packages: read

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

env:
DOTNET_NOLOGO: "true"
DOTNET_CLI_TELEMETRY_OPTOUT: "1"
SYNCFUSION_LICENSE_KEY: ${{ secrets.SYNCFUSION_LICENSE_KEY || 'empty' }}
GITHUB_USERNAME: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages

jobs:
ci:
name: ${{ matrix.name }}
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- name: windows-x64
runner: windows-latest
- name: windows-arm64
runner: windows-11-arm
- name: linux-x64
runner: ubuntu-24.04
- name: linux-arm64
runner: ubuntu-24.04-arm
- name: macos-x64
runner: macos-26-intel
- name: macos-arm64
runner: macos-26

defaults:
run:
shell: pwsh

steps:
- name: Checkout
uses: actions/checkout@v7

- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
global-json-file: global.json

- name: Cache NuGet packages
uses: actions/cache@v5
with:
path: ${{ github.workspace }}/.nuget/packages
key: nuget-${{ matrix.name }}-${{ hashFiles('**/*.csproj', 'global.json', 'nuget.config') }}
restore-keys: nuget-${{ matrix.name }}-

- name: Restore
run: dotnet restore SlideGenerator.slnx

- name: Fetch face fixtures
# Generator.Tests copies tests/fixtures/faces/single/f_0.jpg at build time (conditional on the file
# existing — see SlideGenerator.Generator.Tests.csproj), and its integration test uses it as the
# fallback crop image. The faces are not committed; FaceDatasetFixture (Image.Tests) downloads them
# at test time, which is too late for the Generator build. Seed just f_0.jpg here (same source and
# row index the fixture uses). Best-effort: if the network is down the Generator integration test
# simply skips, same as before.
run: |
$dir = "tests/fixtures/faces/single"
New-Item -ItemType Directory -Force -Path $dir | Out-Null
$dest = Join-Path $dir "f_0.jpg"
if (Test-Path $dest) { exit 0 }
try {
$rows = Invoke-RestMethod "https://datasets-server.huggingface.co/rows?dataset=eurecom-ds%2Fceleba-hq&config=default&split=train&offset=0&length=1"
Invoke-WebRequest $rows.rows[0].row.image.src -OutFile $dest
} catch {
Write-Host "::warning::Face fixture download skipped; Generator integration test will skip"
exit 0
}

- name: Build
run: dotnet build SlideGenerator.slnx --no-restore

- name: Run tests
run: |
$rc = 0
Get-ChildItem -Path tests -Filter *.csproj -Recurse | Sort-Object Name | ForEach-Object {
$name = $_.BaseName
Write-Host "::group::$name"
dotnet test $_.FullName --report-trx --report-trx-filename "$name.trx" --results-directory "TestResults/$name"
if ($LASTEXITCODE -ne 0) { $rc = $LASTEXITCODE }
Write-Host "::endgroup::"
}
exit $rc

- name: Collect test outputs
if: always()
run: |
Get-ChildItem -Path tests -Filter *.pptx -Recurse -ErrorAction SilentlyContinue |
Where-Object { $_.FullName -replace '\\','/' -match '/fixtures/output/' } |
ForEach-Object {
$rel = ($_.FullName -replace '\\','/') -replace '^.*/tests/', ''
$proj = $rel.Split('/')[0]
$dest = "TestResults/$proj/output"
New-Item -ItemType Directory -Force -Path $dest | Out-Null
Copy-Item $_.FullName -Destination $dest
}

- name: Upload test results
if: always()
uses: actions/upload-artifact@v7
with:
name: test-results-${{ matrix.name }}
path: TestResults
if-no-files-found: warn
overwrite: true
retention-days: 14
43 changes: 43 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: "CodeQL"

on:
push:
branches: [ develop ]
pull_request:
branches: [ develop ]
schedule:
- cron: "0 3 * * 1" # Monday 03:00 UTC weekly
workflow_dispatch:

permissions:
contents: read
security-events: write

jobs:
analyze:
name: Analyze (${{ matrix.language }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- language: csharp
build-mode: none
- language: actions
build-mode: none

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql/codeql-config.yml

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
with:
category: "/language:${{ matrix.language }}"
60 changes: 60 additions & 0 deletions .github/workflows/qodana.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: "Qodana"

on:
workflow_dispatch:
pull_request:
branches: [ main, develop ]
push:
branches: [ main, develop ]
paths:
- "src/**"
- "Directory.Build.props"
- "Directory.Packages.props"
- "global.json"
- "*.slnx"
- ".github/workflows/qodana.yml"

permissions:
contents: write
pull-requests: write
checks: write
packages: read

jobs:
qodana:
name: Qodana Scan
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0

- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
global-json-file: global.json

- name: Configure NuGet credentials
run: |
dotnet nuget update source SlideGenerator.OpenCvSharp \
--username "${{ github.actor }}" \
--password "${{ secrets.GITHUB_TOKEN }}" \
--store-password-in-clear-text \
--configfile nuget.config

- name: Qodana Scan
uses: JetBrains/qodana-action@v2026.1
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
with:
args: --project-dir .
results-dir: ${{ runner.temp }}/qodana/results
cache-dir: ${{ runner.temp }}/qodana/cache
upload-result: true
artifact-name: qodana-report
pr-mode: ${{ github.event_name == 'pull_request' }}
post-pr-comment: true
github-token: ${{ github.token }}
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
Loading
Loading