2026-07-27 - 2026-08-03
Overview
There has been no commit activity in this period.
43 Issues closed from 1 user
Closed
#628 [Bug][CI][E2E] e2e.staff credential drift — OpenBao staff_password no longer authenticates against Keycloak (student from same secret works)
Closed
#894 Photo gallery: Florence-2 AI auto-tagging pipeline step (auto-tags + caption, suppressible, full backfill)
Closed
#786 [Bug][Prod][Calendar] GET events threw for every pre-#781 event — required non-nullable AffectsAvailability missing from old documents (backfilled)
Closed
#824 CI gap: strictTemplates / app-build errors merge to master green (nx build spikersoft not gated)
Closed
#805 [Feature][Art Studio] Serve display images as AVIF derivatives (small card + full), keep PNG for download
Closed
#807 Art Studio: let owners upload an edited .tif as a non-destructive stack variant
Closed
#822 GPU coordinator queue deadlocked after #467 node-routing deploy — Embeddings pinned to disabled SERVER lane wedges all GPU tenants
Closed
#540 [Bug][Infra][CI] SpikerSoft.EventHandlers.Scheduler is built nowhere and deployed nowhere — scheduled tasks (GeoIpUpdate incl.) never run
Closed
#848 Art Studio UI: show what made an asset, and let a user remake it (#842)
Closed
#843 Art Studio: record what actually produced each stage run (#842)
Closed
#851 GET api/Profile/images/{id} returns 500 — response compression grows already-compressed images past Content-Length
Closed
#888 OpenBao HA is silently degraded by sealed standbys — seal state has no monitoring, turning one node loss into a 2.5h write outage (#885 post-mortem)
Closed
#849 Art Studio: name storage keys for what they hold (#842)
Closed
#579 [Bug][CI][Infra] gitea-runners arm_v8_2 crash-looping on dreamstream6 since the #539 outage — ARM CI capacity silently down 3→2
Closed
#852 PROD: all Art Studio images 404 — #849 rename orphaned the legacy PascalCase artifact key
Closed
#853 Drop GridFS naming from Art Studio: rename to objectKey, migrate legacy docs, remove the #852 shim
Closed
#831 Sponsor family card: declutter header, consolidate member photos, promote the $ tracker
Closed
#850 CI: prune artpipe container pin tags — keep :latest + 3, they accumulate forever
Closed
#844 art_pipe: always seed generation, and record what made each image (#842)
Closed
#839 ModelEnvImages: triposg venv unbuildable (fvdb needs Python >=3.11, manifest pins 3.10) — aborts the serial loop and silently blocks 4 later images
Closed
#875 Fund-management admin page: recurrence/prize-kind enum drift (400s) + domain/action pickers
Closed
#873 exposeAgePublicly parental permission + Age on SponsorFamilyMember (consent-boundary design)
Closed
#871 TopAwards on SponsorFamilyListItem — public top-4 family prizes/skills aggregation
Closed
#870 Family card re-skin to approved mock (header, ringed avatars, image destination tiles, CTA banner)
Closed
#869 Destination background images: anonymous /destination-images MediaRoute from MinIO assets bucket
Closed
#863 Art Studio: artifacts only appear when the whole asset finishes, and the progress percentages are not honest
Closed
#860 hex-tower-defence: loadout effect re-subscribes to the art loader's httpResources, looping until the renderer is killed
Closed
#867 Rework /employment into a routed master-detail careers page with a globe
Closed
#881 book-upload preview binds bucket-relative coverImage key as <img src> — broken preview for MinIO-served books
Closed
#893 Photo gallery: free-form tags — editor, gallery filter/search, EXIF keyword seeding
Closed
#892 Photo gallery: poor thumbnail quality — Lanczos3 + edge-aware sharpening + fix ORF 160×120 thumbs
Closed
#891 Photo gallery: multi-select upload wrongly groups unrelated photos as a burst
Closed
#535 [Enhancement][ArtPipe][Angular] AI QR code generation — SDXL qrcode_monster ControlNet per-model lane + authenticated AI button in the QR tool
Closed
#877 [Bug][Infra][CI] ModelEnvImages rebuilds all 10 model images from scratch every push — a provenance LABEL above the expensive layers busts the cache (3h build, hits the runner cap)
Closed
#878 Sponsor family card UI/UX: spotlight bio clipped, duplicate family-page link, broken narrow-lane/mobile layout
Closed
#880 Offline book downloads don't persist the cover — downloaded books show broken covers once the presigned URL expires
Closed
#883 Duplicate System Activity gear FAB on /art-studio
Closed
#887 artpipe-model-blender:latest missing from registry — service Reject-loops every ~5s since the 04:11Z artpipe redeploy
Closed
#890 Restore QR-art rate limit to 6/hr after the #889 testing window
Closed
#889 QR Monster: add SD1.5 Monster v2 'classic' variant + per-variant tuning (gallery-quality blending)
Closed
#884 Sponsor family card: hover member tabs (locations/bio/awards) + dashboard sponsor grid layout
Closed
#882 CI red: 3 SponsorControllerTests family tests dial real MongoDB — #871 TopAwards reads not mocked
Closed
#885 OUTAGE: dreamstream4 down → RabbitMQ backbone unreachable since 12:17Z — consumers can't connect, redis node lost
30 Issues created by 1 user
Opened
#878 Sponsor family card UI/UX: spotlight bio clipped, duplicate family-page link, broken narrow-lane/mobile layout
Opened
#879 SW caches /api/book/* JSON for 7d while presigned cover URLs expire in hours — fallback serves dead cover links
Opened
#880 Offline book downloads don't persist the cover — downloaded books show broken covers once the presigned URL expires
Opened
#881 book-upload preview binds bucket-relative coverImage key as <img src> — broken preview for MinIO-served books
Opened
#882 CI red: 3 SponsorControllerTests family tests dial real MongoDB — #871 TopAwards reads not mocked
Opened
#883 Duplicate System Activity gear FAB on /art-studio
Opened
#884 Sponsor family card: hover member tabs (locations/bio/awards) + dashboard sponsor grid layout
Opened
#885 OUTAGE: dreamstream4 down → RabbitMQ backbone unreachable since 12:17Z — consumers can't connect, redis node lost
Opened
#886 ArtPipeProcessor host has no RabbitMQ startup retry/backoff — 7s crash-loop + Seq flood whenever the broker is away
Opened
#887 artpipe-model-blender:latest missing from registry — service Reject-loops every ~5s since the 04:11Z artpipe redeploy
Opened
#888 OpenBao HA is silently degraded by sealed standbys — seal state has no monitoring, turning one node loss into a 2.5h write outage (#885 post-mortem)
Opened
#889 QR Monster: add SD1.5 Monster v2 'classic' variant + per-variant tuning (gallery-quality blending)
Opened
#890 Restore QR-art rate limit to 6/hr after the #889 testing window
Opened
#891 Photo gallery: multi-select upload wrongly groups unrelated photos as a burst
Opened
#892 Photo gallery: poor thumbnail quality — Lanczos3 + edge-aware sharpening + fix ORF 160×120 thumbs
Opened
#893 Photo gallery: free-form tags — editor, gallery filter/search, EXIF keyword seeding
Opened
#894 Photo gallery: Florence-2 AI auto-tagging pipeline step (auto-tags + caption, suppressible, full backfill)
Opened
#895 2026-07-29 power outage: RabbitMQ mnesia corruption took down all consumers (recovered)
Opened
#896 /sponsor/family/{key} page renders under the fixed menu bar (hero cut off)
Opened
#897 Remove the command-line tool from learn.spikersoft.com
Opened
#898 [Bug] You still see (and can call) yourself in the video-call picker — self-filter compares sub against ChatHub's sid
Opened
#899 Support pasting images from clipboard in image upload areas
Opened
#900 Skill-management active toggle never persists — PUT payload omits isActive and the reload reverts the flip
Opened
#901 Decompiler search box and member-type filter chips are inert — getFilteredNamespaces() ignores both
Opened
#902 Geography facts admin: editing a fact with no source crashes the edit form (TypeError: this.field(...) is not a function)
Opened
#903 Keycloak admin: "create disabled user" confirmation dialog renders COMPLETELY EMPTY and cannot be closed (missing TranslocoDirective import)
Opened
#904 Menu bar: declutter top-level nav + drive desktop/mobile menus from one model
Opened
#905 Rebrand landing/marketing copy: children-first → family-inclusive
Opened
#906 Design: trip planner — day-by-day itinerary with costs, materials, and calendar tie-in
Opened
#907 Art Studio admin pages render content under the fixed menu bar
126 Unresolved Conversations
Open
#726
Authenticated E2E walk: rpg-game, dungeon-crawler, duality-game fail with runtime TypeErrors (pre-existing on master)
Open
#643
[Decision][SonarQube] Rule-level noise policy: CA1873 (3.5k), CA1861 (1.4k), S101 (663), S1192 (404), S1075 (74) — ~70% of open backend findings
Open
#242
[Bug] SonarQube S7059: async operation inside a constructor
Open
#840
NetworkStatusService uses Inject() instead of inject() — DI is broken
Open
#572
[Backend][Refactor] Extract the 'Mark Wilson / Marks-Site' client domain (generator-propane service business) out of the SpikerSoft platform codebase
Open
#615
[Bug][CI][Infra] #584 not fixed — deploy job's git pull runs unprivileged on a root-owned /mnt/infrastructure, so every infra deploy silently ships a stale stack
Open
#519
[ArtPipe] Baked images Phase 3: prodstages image + live modeling-lane cutover (epic #515)
Open
#722
EPIC: Angular 22 + Nx 23 full-leverage modernization (signal forms, resource APIs, affected CI, remote cache)
Open
#760
marks-address: duplicate @for track keys for unsaved addresses + saveAddresses() is a stub
Open
#582
[Bug][Prod][GPU] #553 is CLOSED but the fix never reached production — quiz-generation still on SERVER's 8GB card, 13h and counting
Open
#774
[Bug][Infra][Deploy] backend deploy reports success while swarm rolls back on transient image-pull failure (silent non-deploy, #584 class)
Open
#756
[Critical][Ops][Notifications] Ops alerting is silently dead — every system-remediation-alert email fails SMTP AUTH 535; critical disk/OOM alerts never delivered
Open
#603
[Bug][Infra][Observability][QA] node-agent shows a green 7/7 while missing on ds1/ds4/ds6 — global-service desired-count hides a 30% monitoring blind spot on exactly the degraded nodes
Open
#555
[Bug][Infra][Alerting] Node outages are invisible to ops alerting — no node-down alerts, kernel alerts arrive after recovery and carry no kernel message, cooldown hides escalation
Open
#236
chore(deps): unpin @types/google.maps (3.65.x DrawingManager typings) (deferred from #230)
Open
#367
[ArtStudio/Infra] Unified elastic GPU capacity — one coordinator model that scales from a single 24 GB card to multi-node, and runs identically on the M5 dev Mac
Open
#704
[GpuCoordinator][Bug] Lease grant races physical VRAM eviction — quiz-generation grant-fail-release cycles to DLQ while ImageDescription yields correctly
Open
#368
[ArtStudio] Model-resident workers — one always-loaded model per service instance, task queues per model, coordinator-arbitrated, scale by replicas
Open
#595
[Bug][Prod][ArtPipe] Concept-art is dead because ArtStudio:StageModelMap is EMPTY — API routes to the legacy in-process stage queue whose consumer can't boot, while the 5 resident model containers sit idle on queues nobody publishes to
Open
#833
EPIC: Pixal3D as an Art Studio modeling backend
Open
#838
Pixal3D PR-5: deploy stack, method option, and routing cutover
Open
#858
artpipe env images: two RUN loops produce 17 GB and 16 GB single layers — split per model
Open
#821
Registry blob corruption: artpipe-model-env-safetycheck 4.8 GB weights layer truncated in MinIO (unexpected EOF)
Open
#775
[Infra][Registry] Blob-integrity hardening: read-verify sweep + Gitea ignores Range on blob GETs + single-node MinIO cannot heal bitrot (consolidates #720/#768)
Open
#857
SECURITY: container registry serves anonymous pull tokens over the public internet
Open
#515
[Epic][ArtPipe][Infra] Per-model baked Docker images — venvs + weights built at image build time, no /opt/art_pipe bind
Open
#876
ApproveParentalLinkCommandHandler silently resets InfoVault (and any unlisted permission) to false
Open
#621
Epic: build the full parent-approval book model (upload approval chain, ApprovedBy audit, parent family/staff-uploads view, auto-Public-on-approval)
Open
#633
[Go-Live Checklist][Security] Rotate + Bao-migrate the dev-environment secrets before production
Open
#543
[Epic][Security][Infra] Central secrets management — OpenBao vault + PKI, retire scattered passwords
Open
#547
[Security][Infra] OpenBao Phase 3: PKI — internal CA, replace CI cert generation, mTLS for the stateful tier (epic #543)
Open
#610
[Security][Infra] OpenBao: centralize public Let's Encrypt cert storage/distribution in Bao (Traefik acme.json → KV; mailserver + consumers pull) (epic #543)
Open
#546
[Security][Backend] OpenBao Phase 2: SpikerSoft.Secrets host-builder seam — service creds from Bao (epic #543)
Open
#563
[Backend][MCPServer] Pre-deployment cleanup for SpikerSoft.AI.MCPServer — demo leftovers, unregistered prompts, no observability wiring, no stack/CI
Open
#811
wasm-voxel AES is broken — round function missing, keystream is input/IV-independent (not real AES)
Open
#797
FileValidationService: outer catch NullRefs when fileData is null
Open
#799
wasm-voxel chat formatter: §o applies bold instead of italic
Open
#795
JsonPacketSerializer: EntityMovedEvent serialize throws NotSupportedException (JsonElement leak)
Open
#794
shockwave_fire spell combo can never trigger — un-normalized case in GetComboType
Open
#793
EquipItem slot validation off by one — EquipmentSlot↔ItemEquipSlot ordinal cast mismatch
Open
#808
PathManager.GetCachedObstacles always empty — CollectObstaclesInPlace never fills _obstacleArrayBuffer
Open
#792
ElementRegistry incompatibility lists reference unregistered elements (H→F/Cl, O→Na/K)
Open
#742
[workspace-plugin] library generator emits "^undefined" peer versions — reads rootPkg.dependencies but framework deps live in devDependencies since E0
Open
#728
storybook: static build broken on master (addon-actions import, node built-ins, worker tsconfig)
Open
#830
Flaky under load: keycloak-admin user-list spec settles resources with a fixed hop count (reddens full-suite SonarQube scan); 9 sibling specs share the pattern
Open
#529
[Infra][MinIO] Uploads-tree coordinated batch cutover — 7 services off /mnt/fusionio (epic #413)
Open
#783
[Infra][MinIO] art-asset-artifacts: the ACTUAL last GridFS bucket → MinIO (ArtStudio stage outputs, ~4.5GB) (epic #413)
Open
#696
[Infra][MinIO] Cut over book/ebook artifacts to MinIO as sole store (ebooks slice of #413) + fix inline-mirror pipeline stall
Open
#613
[Bug][Infra][MinIO] file-movement's metadata-svc key can't write the quarantine bucket (Access Denied) — blocks #526/#529 cutover (epic #413)
Open
#825
Art Studio MinIO migration: reader cutover preceded writer cutover → gap-window artifacts orphaned (500 on download)
Open
#820
ArtStudio/photo-gallery downloads 404: artpipe workers write GridFS while API reads MinIO (stale pre-#783 deploy)
Open
#530
[Backend][MinIO] GeoLite2 → reference-data bucket; self-provisioning GeoIP (epic #413, resolves GeoIP half of #489)
Open
#532
[Infra][MinIO] Optional: replace sftp stack with MinIO SFTP mode (epic #413)
Open
#413
[Infra][Architecture] Provider-agnostic object storage (MinIO -> S3/Azure Blob) to replace GlusterFS/host-path model
Open
#856
PROD: GET /api/artstudio 500s — #853 objectKey rename deployed to the reader but not the artpipe writer
Open
#531
[Infra][MinIO] Migrate Angular nginx root bind — presigned/proxy, LAST (epic #413)
Open
#619
[New Feature] Space game: procedural shader-based asteroid scan cutscene (replaces pre-rendered video)
Open
#570
[QA][Perf] No measured figures exist for the non-GPU pipelines (coderunner, blog media, lesson video, decompile, OCR) — establish a benchmark/measurement pass so the READMEs can carry real numbers
Open
#503
[Bug][Infra][CRITICAL] SERVER node crash-looping — kernel 'BUG: Bad page state in process dockerd' (memory corruption / likely bad RAM); flaps all SERVER-pinned services
Open
#642
[Infra][SonarQube] CE fails extracting LARGE uploaded reports: PGbytea ArrayIndexOutOfBoundsException reading ce_task_input (root cause of the old #344 crash)
Open
#482
[Bug][Infra] Keycloak Postgres TOAST corruption (pg_toast_2619 / pg_statistic) — ClearExpiredEvents failing, events not purged
Open
#561
[Bug][Infra][Data] Keycloak postgres pg_statistic toast corruption persists after #552 closed — ClearExpiredEvents/session purge failing every 15-min cycle since 02:29Z, repair never run
Open
#659
[Go-Live Checklist][Container] Docker hardening: non-root USER, --no-install-recommends, disable curl/wget redirects (SonarQube hotspots S6471/S6500/S6506)
Open
#578
[Backend][Cleanup] Dependency audit — unused NuGet references across projects inflate every service image (ExCSS, Ical.Net, Redis.OM, Newtonsoft.Json, Configuration.* and more)
Open
#601
Retire the three orphaned IInfluxMetricsRepository methods (QueryCpuMetricsAsync, QueryMetricsAsync, StreamMetricsAsync)
Open
#576
[Backend][Cleanup] Retire the pre-marker legacy manager classes (HexatileGameManager, ToolsManager, DBManager, CacheManager/ICacheManager) — DI-registered but architecturally superseded
Open
#781
Epic: Unified scheduling — recurrence engine + availability (calendar + iCal)
Open
#713
[UX][Blog][Angular] Small polish batch: moderation shield tooltip + theme-token colors in blog SCSS (epic #705)
Open
#705
[Epic][Blog][UX] Blog management & UX overhaul — findings from the 2026-07-18 full review
Open
#708
[Feature][Blog][Angular] "My posts" management view — surface drafts/pending/rejected in one place (epic #705)
Open
#709
[Feature][Blog][Angular] Author edit UI — updateBlogPost exists server+service side, no surface calls it (epic #705)
Open
#711
[UX][Blog][Angular] Media grid hardcodes cols=3 — squashed tiles on mobile (epic #705)
Open
#710
[Perf][Blog][Angular] List loads ALL posts and filters client-side — backend pagination discarded, no pagination UI (epic #705)
Open
#847
Art Studio: reproduce and vary a recorded run (#842)
Open
#715
[TechDebt][Blog][Angular] Two base-URL sources — service uses API_BASE_URL token, media URLs use environment.baseUrl (epic #705)
Open
#714
[Test][Blog][E2E] Blog has zero Playwright coverage — add an authenticated blog spec (epic #705)
Open
#712
[UX][Blog][Angular] Create flow: setTimeout(1000) navigation + no unsaved-changes guard (epic #705)
Open
#785
Schedule tab: boundary months render with only their in-horizon weeks — pad split months with unschedulable placeholders (epic #781)
Open
#663
Reading Journey: quiz answer review never shows correct answers/explanations (no backend endpoint ships the answer key)
Open
#593
[Bug][Backend][Books] Chapter extraction is orphaned end-to-end — nothing ever populates Book.Chapters, and GET /books/{id}/chapters returns [] for every book, always
Open
#698
[Bug][Reliability] Workers pass healthcheck with a DEAD RabbitMQ consumer → pipeline stages silently stall (image.description: 128 msgs/0 consumers)
Open
#790
[Feature][Calendar] Create-for-child from the parent calendar — owner selector in the event modal (follow-up to #788)
Open
#700
[Bug][Infra][Gitea/MinIO] Large registry push restarts single-node MinIO → Gitea storage.Init crash-loops → full git+CI 404 outage
Open
#777
[Content][Feature] Video captions: 8 media elements lack subtitle/description tracks (S4084, split from a11y epic #732)
Open
#645
[GameServer][Bug] Projectile hit checks ignore the previous position (tunneling) and spam Warning-level logs per player per tick — CampZone + DungeonZone
Open
#841
ArtPipeProcessor deploy: /mnt/infrastructure pull fails auth (stale checkout deployed, only a WARNING) + one stack's 'update out of sequence' aborts all later deploys
Open
#835
Pixal3D PR-2: make the artpipe VRAM admission gate tunable
Open
#834
Pixal3D PR-1: artpipe manifest + WRAP backend + runner
Open
#35
[Enhancement] Playground toolbar: Format document (Monaco API, shortcuts, per-language formatter hooks) — platform
Open
#787
[Bug][Backend] images/{id} intermittent 500: response wrote 163840 bytes against Content-Length 163409 (post-MinIO recurrence of the #758 signature) + Traefik compresses images wastefully
Open
#602
[Bug][Telemetry][QA] #588 was closed but the fix never reached production — every .NET service STILL reports service.namespace=1.0.0 and no span carries node identity (verified in live Jaeger)
Open
#868
EPIC: Sponsor family card redesign — image-backed destination tiles, achievements strip, parent-gated age
Open
#750
refactor(sponsor): migrate SponsorController to CQRS handlers
Open
#761
Hygiene: event-modal debug console.logs ship to prod + 6 templates spam NG8011 projection warnings every build
Open
#757
[Infra][SERVER] Root disk hit 99% from accumulated stale deploy images — pruned 222.7GB (now 49%); add scheduled prune on service nodes + investigate OOM kills
Open
#514
[Infra][CI] Gitea Actions leaves GITEA-ACTION* volumes behind → build nodes recurrently fill up (need runner auto-cleanup / scheduled prune)
Open
#521
[Infra][Registry] Gitea upstream-image mirror (skopeo → mirror/* org) + incremental stack repointing
Open
#810
Boss.selectBossType() is a broken dead stub — throws on any call (empty bossTypesForFloor)
Open
#809
CourseModule constructor never assigns this.number — every module.number is undefined
Open
#812
AutopilotHUD: target-type toggle unclickable — hit-area overlaps 'Go to Position' command button
Open
#460
art_pipe observability: install OpenTelemetry into model venvs so worker spans (#430) actually export (#428)
Open
#717
[CI][Backend] Tier-3 artpipe finals builds keep getting superseded/cancelled before pushing — dino fix (#702) never reached the registry
Open
#6
[Future] TypeScript curriculum + in-browser transpile (pnpm typescript, no CDN)
Open
#589
[Bug][Prod][Data-loss] 10 messages are permanently dead in DLQs with ZERO consumers — 5 of them are real user quizzes killed by #553, now replayable
Open
#538
[Infra][Network] LAN traffic to *.spikersoft.com NAT-hairpins through the UDM — local DNS records + direct Gitea→MinIO path
Open
#605
[Test][E2E] Split authenticated e2e into staff + student roles (two identities)
Open
#3
[Future] OpenSC2K-style SimCity 2000 learning / creative sandbox (optional game)
Open
#554
[Bug][Infra] jetson-influxdb fleet exit-0 churn — all 7 replicas print banner, hit 'I/O error', exit and restart every ~10s (since the 2026-07-13 17:01Z redeploy)
Open
#762
keycloak-admin user-roles: both role-search boxes are wired to nothing
Open
#489
[Bug][Backend] Missing reference data on prod — GeoLite2-City.mmdb + postal-code dataset absent, features degraded
Open
#804
[Bug][Art Studio] Display images never cache across visits — backend half of #784 (presigned display URL) was never built
Open
#483
[Bug][Infra] InfluxDB rejecting a client every ~10s ("authorization not found") — stale/missing token on a poller
Open
#600
SECURITY: live InfluxDB token committed in SpikerSoft.Api/appsettings.json — needs rotation, not just deletion
Open
#455
[Bug][Prod] Art Studio 'modeling' stage fails — TripoSG model manifest missing on prod host
Open
#796
BlogRateLimiter: HashSet counters collapse same-millisecond increments
Open
#463
[ArtStudio][Epic] Equipment asset type — bespoke attachable-equipment pipeline (stage plan, sockets/grips, art_pipe capabilities)
Open
#687
[Angular][Dead-code] Course class has 8 declared-but-never-assigned/read private fields (classes/course.ts)
Open
#845
Art Studio: carry generation-parameter overrides to the worker (#842)
Open
#846
Art Studio: text+image concept, and fix image-upload submissions (#842)
Open
#842
EPIC: Art Studio — record and replay generation parameters (+ text+image concept)
Open
#854
Latent #852 twin: UserProfile.Images uses Newtonsoft [JsonProperty] on a System.Text.Json column
Open
#862
[Bug][Backend][Data] Metadata extraction has no idempotency guard — a single upload inserted 2× full page sets (342 dupes, 2026-07-18); answers #509's open questions
Open
#872
Family achievements strip on the card (ui-award-chips) + skills.service route fixes
Open
#874
Skill awards can trigger fund payouts (server skill-awarded activity + earned-skill-count provider)
Open
#861
artpipe: decimation to 6k faces tore 60% of the mesh surface open — relax it, and replace the simplifier
Open
#38
[Enhancement] C# playground: Roslyn / dotnet formatter for Monaco