docs/current/feature-map.md
Download Markdown
Trace a user action from its web controller or browser module into its application owner before editing. Folder names alone do not prove ownership: Runtime deliberately compiles several root source trees.
| Capability | Primary source locations | Contract to preserve |
|---|---|---|
| Public catalog, discovery, profiles | src/DrakimaCore.Public.Web, Services/Discovery |
Publication and audience filters; bounded queries |
| Staff CMS and release review | src/DrakimaCore.Studio.Web/Areas/Admin, Services/Editorial |
Draft/review/approval/publish lifecycle and assignments |
| Page builder Phase 0 study | Studio PageBuilderPrototypeController, wwwroot/js/page-builder-prototype, docs/design/studio-page-builder |
Disposable public-copy fixtures; staff entry; no server drafts or publication writes; see Phase 0 |
| Persistent page drafts | Domain/Application Pages, Runtime-linked Infrastructure/Pages, Core Models/Pages and Studio PagesController |
Conditional immutable checkpoints, exact candidate bindings, current editorial assignments and protected page images; authoring and public serving have independent switches |
| Saved page rendering and previews | Application PageRenderer, Runtime PageMarkdown / PublicPageSources, Studio PagePreviewsController, Web.Shared Views/Shared/Pages and page-content CSS/JS |
Exact retained revision/hash; authenticated private previews; existing catalog eligibility; shared component markup; admitted public releases use the same renderer |
| Visual page authoring | Domain PageTemplates, Studio PagesController, Views/Pages, wwwroot/js/page-editor and page-editor CSS |
Current author assignment and optional Admin pilot; serialized conditional saves, explicit local recovery, private owned images, exact saved preview and opt-in Admin numeric editor measurements |
| Page releases and recovery | Application PagePublicationChecks / PagePublicDelivery, focused Core page adapters, Studio release panel and Public SitePagesController |
Exact revision/path approval, conditional atomic activation and outbox, retained release rollback, restore to a new draft, withdrawal/archive/export; default-closed Public serving; read-only approved-release views and guarded images |
| Existing Home and Site Guide conversion | Domain PageSurfaceRegistry, Application PageSurfaceBaselines / PageSurfaceDelivery, focused route-mode adapter, Public HomeController / PageSurfaceMediaController, shared native page presentations |
Explicit one-time private import and provenance; fixed routes; Legacy/Builder/Unavailable modes; per-route admission; no implicit fallback; existing catalog/account/welcome owners; see conversion guide |
| Page menus, discovery and Akari | Application PagePublicCatalog / PageAuthoredText / PageProjectionDispatcher, focused catalog/outbox adapters, discovery snapshot owner, shared PageNavigation, Studio release panel, Akari projection/context/retrieval |
Explicit menu references; release metadata and bounded discovery; current render/dependency admission; deterministic prose/current-owner links; leased event retries and lag diagnostics; stale page evidence withheld |
| Page operations and maintenance | Application PageOperations / PageCheckpointRetention / PageMaintenance / PageDiagnostics, focused Core operations adapter and writer barrier, private image inventory/quarantine, Studio operations/maintenance controllers, Web.Shared response timing filter |
Admin reports and complete owned-image verification; constrained per-checkpoint pruning with immutable transaction receipts; recoverable orphan quarantine and grace-gated final removal under writer exclusion; mutation defaults closed |
| Private Gynoid conversations | src/DrakimaCore.GynoidConversations.Application, src/DrakimaCore.GynoidConversations.Infrastructure, src/DrakimaCore.GynoidConversations.Web |
Account-owned sessions, full selected history, idempotent operations |
| Character identity and room presentation | Services/Gynoids, Content/Gynoids, shared webroot manifests |
Explicit identity/outfit defaults; immutable retained releases |
| Akari guidance, retrieval, support | Services/Akari, Composition |
Audience-filtered sources and separate role/context budgets |
| AI transport and planning | src/DrakimaCore.Infrastructure, src/DrakimaCore.Application, Runtime adapters |
Cancellation, provider limits, bounded admission |
| Interview Studio | src/DrakimaCore.InterviewStudio.Web, application/infrastructure InterviewStudio folders |
Curriculum and adaptive session ownership |
| VN Maker and published VNs | Studio/Public Web, Services/VisualNovel, Application visual-novel contracts |
Draft versus immutable release; explicit AI bridge |
| Drakima Arcade | Application/Infrastructure Arcade, Composition/DrakimaArcadeComposition, Public ArcadeController |
Published local quartet, independent visibility allowlist, permanent campaign ownership, predecessor completion, exact owned run/checkpoint and reward evidence; preserve retained pins; see Arcade |
| Valkyrie player assistance and controllers | Public Web visual-novel/battle-assistance.js, console-gamepad.js, active-battle-player.js |
Device preferences use existing pause/command protocols; no client-owned outcomes; see development program |
| Credits and payments | src/DrakimaCore.Credits, Infrastructure/Credits, commerce services |
Stable ledger keys, one settlement, retained financial history |
| Public Store | Public Commerce StoreController, Views/Store, store.css, CommerceCatalogService |
/Store lists active priced credit plans and published purchasable albums; existing cart/checkout and album owners retain purchase authority |
| Media discussion and community | Services/Videos, Services/Community, Public Media/Journal/Novels controllers |
Published description, public cast/lore and linked lyrics; bounded source context; complete reviewed replies; private cards/history remain separate |
| Accounts, continuation, notifications and support | Shared Identity, Public account/Continue/SupportDesk controllers, Security |
Current account/role checks, unavailable registration/checkout states, clear notifications without leaving the page, private support visibility |
| Artwork and public media | Tools/AssetPipeline, Infrastructure storage/media adapters |
Separate source/private/public bytes and canonical manifests |
| Character turnarounds | Application IGynoidTurnaroundLibrary / IGynoidTurnaroundEditor, Infrastructure GynoidTurnaroundLibrary / TurnaroundAuthoringStore, Studio Admin Turnarounds |
Packaged baseline plus durable staff edits, stable character/version pairs, ordered views, revision checks and recoverable deletion |
| Installed sprite editing | Application/Artwork, Infrastructure/Media/InstalledGynoidSpriteEditor, Studio InstalledGynoidSprites |
Registered image selection, fixed canvas, shared-slot disclosure, revision recovery |
| Local artwork production | Tools/Drakima.GynoidCreationCore, Libraries/Drakima.CreationCore.* |
Creator-PC compute/storage; explicit approved exports; no website dependency |
| Background work | hosts/DrakimaCore.Workers, capability registrations in Composition |
Owned cancellation, recovery and effective feature availability |
| Engineering documentation | docs/current, Services/Engineering, Engineering/Admin Web areas |
One reviewed handbook source, deliberate public/staff audience |
Browser ownership
Feature JavaScript belongs in the owning Web project. Shared utilities belong in Web.Shared only when multiple surfaces actually use them. The room lifecycle owns listeners, abort signals, transitions and teardown. It prevents duplicate transitions and late results from changing a newer chat. Keep speech playback state when moving its controls between standard and VN views.
Stable JavaScript module imports and CSS URLs revalidate. Content-versioned Razor asset URLs may cache immutably. Do not add manually dated query strings to dependency imports or duplicate module instances. Room-only CSS belongs to the conversation feature; shared layout owns the global website background.
Finding the exact owner
Use rg for the route, action, interface or browser event. Follow registration in Composition and
project references, then inspect the nearest tests. Search SystemCatalog for the matching capability
and compatibility allowance. A new interface is useful only if it gives a workflow a clear owner;
wrapping the same service without reducing dependencies does not complete a module extraction.
See architecture, rooms, and media.
Gynara game and Maker owners
The sibling TheGynaraLegend repository owns engine, content, authoring, simulation and player presentation. DrakimaCore owns protected Arcade admission, publication and verification. Start with the platform map and release boundaries. Avoid moving website account rules into the game engine or making the portable simulation depend on WPF.