Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
223 commits
Select commit Hold shift + click to select a range
28fc284
fix: remove orphan conflict markers in MainMenu, Dashboard, lolIdentity
NicoRuedaA May 13, 2026
c1d38d4
fix: remove orphan conflict marker in live_match/mod.rs
NicoRuedaA May 13, 2026
17765eb
fix: resolve conflict markers in team_builder.rs and trailing comma i…
NicoRuedaA May 13, 2026
01dd6c0
fix: resolve remaining merge conflict markers across 4 crates
NicoRuedaA May 13, 2026
deb1e52
fix: resolve remaining conflict markers and rename competition->match…
NicoRuedaA May 13, 2026
eb6213d
fix: enable V52 multi-competition migration and fix orphan markers
NicoRuedaA May 13, 2026
da9af45
chore: fix dead code warnings (unused var, mut, dead_code)
NicoRuedaA May 13, 2026
45f2b5a
fix: remove orphan marker in PlayerProfileHeroCard.tsx
NicoRuedaA May 13, 2026
fbde798
fix: remove last 2 orphan conflict markers in ChampionsTab and live_m…
NicoRuedaA May 13, 2026
b194c84
feat: show Tier 2 competitions with tier separator in league picker
NicoRuedaA May 13, 2026
08ef922
fix: normalize team JSON files for tier 2 competitions
NicoRuedaA May 13, 2026
ee07a6b
fix: properly normalize team JSON files with Python
NicoRuedaA May 13, 2026
d1d54f3
fix: set LFL to tier 2 and fix null values in team JSON files
NicoRuedaA May 13, 2026
ca22fa2
Revert "fix: set LFL to tier 2 and fix null values in team JSON files"
NicoRuedaA May 13, 2026
0cdab1a
fix: set LFL to tier 2, fix TCL colors.secondary null
NicoRuedaA May 13, 2026
c1c62d9
fix: normalize team icon filenames to lowercase
NicoRuedaA May 13, 2026
c821e49
DB import
NicoRuedaA May 13, 2026
b771d3c
fix: pass profile_image_url to resolvePlayerPhoto in player tables
NicoRuedaA May 14, 2026
ce76725
Solucion error de compilacion en ofm_core
joselaguilarhz May 14, 2026
cb9c60e
fix: add full country names to nationality mapping for flag rendering
NicoRuedaA May 14, 2026
51373cc
fix: show competition icons in CompetitionsTab instead of generic Trophy
NicoRuedaA May 14, 2026
90567d8
fix: use competition_id for competition icon URLs
NicoRuedaA May 14, 2026
8bdd492
Revert "fix: use competition_id for competition icon URLs"
NicoRuedaA May 14, 2026
61ad4ce
fix: show competition icons in CompetitionsTab using competition_id
NicoRuedaA May 14, 2026
7c12515
fix: add missing Calendar import in CompetitionsTab
NicoRuedaA May 14, 2026
9163aed
fix: add missing TrendingUp import, fix CalendarIcon references
NicoRuedaA May 14, 2026
2a8b697
fix: update player photo resolution in ChampionsTab, TacticsTab, Trai…
NicoRuedaA May 14, 2026
d45350a
fix: resolvePlayerPhoto now tries playerId as photo filename before f…
NicoRuedaA May 14, 2026
eef5453
fix: look up player from gameState in TacticsTab for correct photo
NicoRuedaA May 14, 2026
486233f
fix: show user team's competition in TournamentsTab with correct logo
NicoRuedaA May 14, 2026
38f9487
Revert "fix: show user team's competition in TournamentsTab with corr…
NicoRuedaA May 14, 2026
d0f935f
fix: show user team's competition in TournamentsTab with correct logo
NicoRuedaA May 14, 2026
5254fda
Merge pull request #6 from joselaguilarhz/main
NicoRuedaA May 14, 2026
76d7534
fix: change lck_cl manifest id to lck-cl to match team ID prefix
NicoRuedaA May 14, 2026
d9d1830
chore: rename lck_cl competition icon to lck-cl
NicoRuedaA May 14, 2026
36b1f9b
fix: remove duplicate HashSet import from PR #6 merge
NicoRuedaA May 14, 2026
b6e8067
feat: make standings table and teams grid clickable to navigate to te…
NicoRuedaA May 14, 2026
ec347c8
feat(ui-v2): scaffold parallel UI behind VITE_UI_V2 flag
joselaguilarhz May 28, 2026
b4443ed
feat(ui-v2): install shadcn/ui with zinc + orange theme
joselaguilarhz May 28, 2026
31b6f2f
feat(ui-v2): add app shell — sidebar, topbar breadcrumb, routed layout
joselaguilarhz May 28, 2026
1c8981e
feat(ui-v2): port Dashboard chrome — new sidebar + header, legacy con…
joselaguilarhz May 28, 2026
67e745b
fix(ui-v2): break Dashboard redirect loop when no active game
joselaguilarhz May 28, 2026
93fea15
fix(ui-v2): probe backend for active game on Dashboard mount
joselaguilarhz May 28, 2026
5419b73
feat(ui-v2): reuse legacy routes, only swap Dashboard for v2
joselaguilarhz May 28, 2026
a4a7f9d
feat(ui-v2): Inbox, Schedule, richer Home tabs + UI version toggle
joselaguilarhz May 28, 2026
6f83ace
Merge remote-tracking branch 'upstream/0.3' into feat/ui-v2
joselaguilarhz May 28, 2026
a65129c
fix(ui-v2): adapt to 0.3 multi-league + match_type rename
joselaguilarhz May 28, 2026
a9640f4
feat(ui-v2): re-enable DraftResultScreen in Schedule
joselaguilarhz May 28, 2026
0fc165a
chore(ui-v2): polish Schedule empty state — suggest new game
joselaguilarhz May 28, 2026
9b8a79a
fix(data): resolve duplicate arena_/stadium_ keys + missing history
joselaguilarhz May 28, 2026
9dc52f3
chore(data): import fresh dump from OLMDBManager (export #6)
joselaguilarhz May 28, 2026
4eed6ba
merge: bring in upstream/0.3-multileague + v2 adaptations
joselaguilarhz May 29, 2026
8d4c851
docs(ui-v2): add AGENTS.md handoff for continuing the redesign
joselaguilarhz May 29, 2026
d381b34
fix(ui-v2): Home crash — injury system removed in 0.3
joselaguilarhz May 29, 2026
f7a8107
fix: round-robin panic on odd team counts + strip duplicate arena keys
joselaguilarhz May 29, 2026
46ee18f
fix: don't panic generating schedules for split-less competitions
joselaguilarhz May 29, 2026
cd44029
docs: add web SaaS migration plan
joselaguilarhz May 29, 2026
9e17d2d
feat(web): Phase 0 — axum server spike wrapping the engine
joselaguilarhz May 29, 2026
d02648e
feat(web): server-side world assembly + day advance
joselaguilarhz May 29, 2026
c900146
chore(web): add Supabase MCP config + env template
joselaguilarhz May 29, 2026
5012ddc
feat(web): Supabase schema — profiles + saves with RLS
joselaguilarhz May 29, 2026
80cceec
feat(web): authenticated, Postgres-backed save persistence
joselaguilarhz May 29, 2026
0a63fec
feat(web): add GET /api/me debug endpoint + validate auth E2E
joselaguilarhz May 29, 2026
dd18198
docs(web): note session-pooler requirement in env template
joselaguilarhz May 29, 2026
bc9328f
feat(web): minimal playable web frontend (login → saves → play)
joselaguilarhz May 29, 2026
42a43d1
fix(data): correct player IGN/real-name swap + photo URLs
joselaguilarhz Jun 1, 2026
bf2368a
fix(web): sync missing player photos + graceful avatar fallback
joselaguilarhz Jun 1, 2026
18526cc
feat(web): import OLMDBManager export from in-game Settings
joselaguilarhz Jun 1, 2026
b9e7e89
fix(data): tolerate null in date_of_birth and team colors
joselaguilarhz Jun 1, 2026
0f5e1c1
feat: implement authentication context and login screen with Supabase…
joselaguilarhz Jun 2, 2026
2952ccc
Merge remote-tracking branch 'upstream/0.3-multileague' into feat/web…
joselaguilarhz Jun 2, 2026
920b3cf
feat(web): sync OLMDBManager data from API
joselaguilarhz Jun 2, 2026
92e7c7f
fix(web): use public OLMDBManager export
joselaguilarhz Jun 2, 2026
33bf8d4
feat(web): add database auto import controls
joselaguilarhz Jun 2, 2026
586f28d
fix(web): respect configured import source
joselaguilarhz Jun 2, 2026
729b02a
feat(web): show import progress and catalog
joselaguilarhz Jun 2, 2026
37de4ee
fix(web): load full DB into world, recover photos, stop image flicker
joselaguilarhz Jun 2, 2026
904531b
fix(domain): tolerate loose player exports so no shard is dropped
joselaguilarhz Jun 3, 2026
a11df60
fix(web): load the complete ERL league data (photos + full rosters)
joselaguilarhz Jun 3, 2026
ee6e431
fix(web): ignore missing imported image refs
joselaguilarhz Jun 3, 2026
ebdde35
fix(web): resolve imported player photos by name
joselaguilarhz Jun 3, 2026
79dde98
fix(web): support stats overview commands
joselaguilarhz Jun 3, 2026
1a03316
fix(web): show imported player profile data
joselaguilarhz Jun 3, 2026
08e8fc9
Merge upstream/main into multiliga-0.3.1
joselaguilarhz Jun 3, 2026
eda568a
chore: bump app version to 0.3.1
joselaguilarhz Jun 3, 2026
795f367
fix(web): silence debug logging console errors
joselaguilarhz Jun 3, 2026
3a240f2
fix(web): provide scrim context in web shim
joselaguilarhz Jun 3, 2026
48eb4e0
fix(web): route dashboard tabs and preserve active league
joselaguilarhz Jun 3, 2026
329fc6e
fix(web): harden competition and finance tabs
joselaguilarhz Jun 3, 2026
c2d14e5
fix(web): import missing symbols crashing finance/competitions/traini…
joselaguilarhz Jun 3, 2026
1cc604f
fix(web): resolve undefined references crashing several dashboard scr…
joselaguilarhz Jun 3, 2026
5f318d1
feat(server): implement champions, inbox, social, blocker web commands
joselaguilarhz Jun 3, 2026
9586e35
fix(web): stop champions load from clobbering concurrent state updates
joselaguilarhz Jun 3, 2026
b848db4
chore: gitignore newly downloaded player photos
joselaguilarhz Jun 3, 2026
8553423
Merge remote-tracking branch 'joselaguilarhz/feat/web-saas' into mult…
Jun 3, 2026
30b105a
feat(menu): game-style main menu with champion splash slideshow
joselaguilarhz Jun 4, 2026
2ecccb8
Refactor code structure for improved readability and maintainability
joselaguilarhz Jun 4, 2026
f7c9f4b
feat(menu): show app version next to pre-alpha label
joselaguilarhz Jun 4, 2026
61fd6a3
fix(menu): keep version indicator in the bottom-right corner
joselaguilarhz Jun 4, 2026
61469e4
feat(settings): game-style tabbed settings when opened from main menu
joselaguilarhz Jun 4, 2026
5a1b012
fix(settings): restrict game-style view to the start-menu entry point
joselaguilarhz Jun 4, 2026
197ce94
Merge remote-tracking branch 'origin/multiliga-0.3.1' into sync-nico-…
joselaguilarhz Jun 4, 2026
b2af27f
feat(settings): apply game-style controls in the menu settings view
joselaguilarhz Jun 4, 2026
1b42c32
refactor(settings): dedicated game-style components for the menu view
joselaguilarhz Jun 4, 2026
d063bd9
feat(settings): Hextech/LoL look for the menu settings view
joselaguilarhz Jun 4, 2026
b167b57
feat(menu): add Community panel with Discord/GitHub links and mentions
joselaguilarhz Jun 4, 2026
dc2dcb7
feat(menu): add Twitter/X link to the Community panel
joselaguilarhz Jun 4, 2026
2017bc7
feat(menu): add Novedades (patch notes) panel sourced from CHANGELOG.md
joselaguilarhz Jun 4, 2026
5aeec31
feat(menu): two-column layout — panels open beside the persistent nav
joselaguilarhz Jun 4, 2026
fd3abe8
Merge remote-tracking branch 'upstream/multiliga-0.3.1' into multilig…
joselaguilarhz Jun 4, 2026
88a30cd
feat(menu): responsive layout + Hextech styling for menu panels
joselaguilarhz Jun 4, 2026
1ddcb58
feat(menu): classic League-client rework of the main menu
joselaguilarhz Jun 4, 2026
8f5c0f4
Revert "feat(menu): classic League-client rework of the main menu"
joselaguilarhz Jun 4, 2026
67def93
feat(menu): add web auth profile and align panels
joselaguilarhz Jun 4, 2026
deee300
feat(auth): add user profile fields and avatar management
joselaguilarhz Jun 4, 2026
3a05ecf
Merge branch 'NicoRuedaA:main' into main
joselaguilarhz Jun 4, 2026
7e8e674
feat: single-file save system, ERL consolidation, data restructure
NicoRuedaA Jun 4, 2026
be40b06
chore: merge upstream/develop (PR #290 QoL fixes + PR #292 bug report…
NicoRuedaA Jun 4, 2026
d3e2d51
feat: unify all game logic into ofm_core
NicoRuedaA Jun 4, 2026
ee53cfc
feat: unify all game logic into ofm_core
NicoRuedaA Jun 4, 2026
e23c244
feat: Docker deployment setup for olmanager.nicorueda.dev
NicoRuedaA Jun 4, 2026
0a4c5d9
chore: trigger deploy
NicoRuedaA Jun 4, 2026
e027f3d
chore: add workflow_dispatch to deploy
NicoRuedaA Jun 4, 2026
de6b1e3
fix: add buildx setup to deploy workflow
NicoRuedaA Jun 4, 2026
a7fe190
fix: lowercase GHCR image names
NicoRuedaA Jun 4, 2026
73d4fa5
fix: correct Dockerfile Cargo.toml path
NicoRuedaA Jun 4, 2026
e80afdb
fix: use latest Rust in Dockerfile
NicoRuedaA Jun 4, 2026
05e3c95
fix: correct Docker Rust tag
NicoRuedaA Jun 4, 2026
7272e8d
fix: copy assets and src for include_str! in Docker build
NicoRuedaA Jun 4, 2026
dfd0b76
fix: deploy workflow paths and remove GHCR login
NicoRuedaA Jun 4, 2026
7d27bae
fix: pass Supabase env vars as Docker build args
NicoRuedaA Jun 5, 2026
db393fc
fix: use new Supabase project for OLManager
NicoRuedaA Jun 5, 2026
058f6d7
fix: build full React app for web (not mini-app)
NicoRuedaA Jun 5, 2026
cdeaa5e
fix: simplify frontend Docker build (skip tsc)
NicoRuedaA Jun 5, 2026
2a1a0ae
fix: copy tsconfig.node.json for Vite build
NicoRuedaA Jun 5, 2026
d27552c
fix: copy data/ for JSON imports in frontend
NicoRuedaA Jun 5, 2026
a636d83
fix: copy assets/ for simulation JSON imports
NicoRuedaA Jun 5, 2026
16989fd
Merge branch 'multiliga-0.3.1' into main
joselaguilarhz Jun 5, 2026
79914d9
Merge remote-tracking branch 'upstream/main'
joselaguilarhz Jun 5, 2026
294cdcf
fix(docker): copy CHANGELOG.md for PatchNotesPanel web build
joselaguilarhz Jun 5, 2026
03353bb
chore: add SSH key for server access
NicoRuedaA Jun 5, 2026
4ee4c86
feat: add all missing web commands to server dispatch
NicoRuedaA Jun 5, 2026
8fe89d3
feat: implement all web commands to match Tauri functionality
NicoRuedaA Jun 5, 2026
3cd88ad
feat: create ofm_core::commands as single source of truth
NicoRuedaA Jun 5, 2026
503ab9e
refactor: consolidate crates, reorganize lib/, remove web/
NicoRuedaA Jun 5, 2026
3600ff8
refactor: consolidate academy, time_blockers, OVR into olm_core
NicoRuedaA Jun 5, 2026
35980e7
refactor(server): unify save format — postgres now uses bincode
NicoRuedaA Jun 5, 2026
7af065c
refactor(core): unified dispatch in olm_core + clean server commands
NicoRuedaA Jun 5, 2026
e537b3d
fix: remove custom Game Deserialize — bincode incompatible with field…
NicoRuedaA Jun 5, 2026
154327b
fix(server): implement get_league_selection_data — was returning empt…
NicoRuedaA Jun 5, 2026
8885a1d
fix(server/web): academy persist, scrim arg name, missing scrim commands
NicoRuedaA Jun 5, 2026
5372398
fix: training groups, champion training target, champions page
NicoRuedaA Jun 5, 2026
0e7de7b
refactor(ui): remove standings tab from Schedule (v1 + v2)
NicoRuedaA Jun 5, 2026
f243157
fix(server): generate welcome messages on select_team
NicoRuedaA Jun 6, 2026
8566c14
fix(core): add welcome messages to select_team in core
NicoRuedaA Jun 6, 2026
6ada113
refactor(core): remove duplicate time_blockers and competition_id_fro…
NicoRuedaA Jun 6, 2026
d96465e
refactor(core): move team_talk to olm_core, unify duplicate helpers
NicoRuedaA Jun 6, 2026
0fd2bc1
refactor(core): move academy helpers to olm_core, unify
NicoRuedaA Jun 6, 2026
06a5de9
refactor(core): move scrim scheduling helpers to olm_core
NicoRuedaA Jun 6, 2026
f560bea
fix(server): add get_scrim_context to server dispatch
NicoRuedaA Jun 6, 2026
ff4ebac
feat(api): new adapter-based API layer (types.ts + tauri + http)
NicoRuedaA Jun 6, 2026
fd33f35
refactor(frontend): migrate all services to use getApiClientSync()
NicoRuedaA Jun 6, 2026
4052b3c
feat(api): init getApiClient() in main, remove tauriCoreShim.ts + alias
NicoRuedaA Jun 6, 2026
f1b0855
chore(tauri): remove deprecated academy commands from registry
NicoRuedaA Jun 6, 2026
ac83fd7
fix(server): implement make_transfer_bid and preview_transfer_bid_fin…
NicoRuedaA Jun 6, 2026
04d594e
feat(core): move sim_live to olm_core + WebSocket endpoint
NicoRuedaA Jun 6, 2026
cde1822
feat(server): live match simulation via WebSocket
NicoRuedaA Jun 6, 2026
4e54f89
fix(api): await getApiClient() before render
NicoRuedaA Jun 6, 2026
330bd11
fix(ui): migrate MainMenu.tsx from direct invoke() to API client
NicoRuedaA Jun 6, 2026
d570a68
fix(api): add Supabase auth headers to http adapter
NicoRuedaA Jun 6, 2026
3d05bae
fix(api): map camelCase to snake_case in saves.create
NicoRuedaA Jun 6, 2026
23b757f
fix(ui): migrate TeamSelection from invoke() to apiPost helper
NicoRuedaA Jun 6, 2026
f174786
fix(ui): add auth token to TeamSelection apiPost helper
NicoRuedaA Jun 6, 2026
7748492
fix(ui): send empty JSON body instead of undefined in apiPost
NicoRuedaA Jun 6, 2026
5156ede
debug(api): add request/response logging to apiPost helper
NicoRuedaA Jun 6, 2026
9713944
fix(ui): replace undefined clientGetLeagueData with apiPost
NicoRuedaA Jun 6, 2026
822d0cc
fix(ui): migrate Dashboard.tsx from invoke() to getApiClientSync
NicoRuedaA Jun 6, 2026
e13024a
fix(ui): properly migrate Dashboard.tsx with apiCmd helper
NicoRuedaA Jun 6, 2026
855c700
fix(server): add error logging to bincode serialize in store.save
NicoRuedaA Jun 6, 2026
6322515
fix(server): add serde_json fallback and logging to store.load
NicoRuedaA Jun 6, 2026
159e56b
fix: remove skip_serializing/skip_serializing_if for bincode compat
NicoRuedaA Jun 6, 2026
09620a7
fix(web): use tauriWindowShim in Dashboard instead of direct @tauri-a…
NicoRuedaA Jun 6, 2026
e6510a3
chore(ui-v2): checkpoint before champion profile redesign
Jun 7, 2026
9745e79
chore(ui-v2): checkpoint before competitions redesign
Jun 7, 2026
1b25c9d
chore(ui-v2): checkpoint before settings redesign
Jun 7, 2026
65a0b7c
feat(ui-v2): Meta, Staff, Youth, Transfers, Finances improvements
NicoRuedaA Jun 7, 2026
4460ad8
feat(menu): dynamic champion splash manifest instead of hardcoded 16
NicoRuedaA Jun 7, 2026
bed65e7
fix: bump save FORMAT_VERSION to 2, prune incompatible saves on init
NicoRuedaA Jun 7, 2026
8708ca8
chore: add debug logging and serde diagnostic for save loading
NicoRuedaA Jun 8, 2026
002bbb2
fix: pre-validate bincode serialization to buffer before writing save
NicoRuedaA Jun 8, 2026
053dfdd
fix: add bincode roundtrip self-test on save creation
NicoRuedaA Jun 8, 2026
33957a2
fix: add JSON roundtrip and hex dump to serde self-test
NicoRuedaA Jun 8, 2026
c32e953
fix: switch save format from bincode to gzipped JSON
NicoRuedaA Jun 8, 2026
9393d6b
fix(ui-v2): add missing FloatingBugButton to AppV2
NicoRuedaA Jun 8, 2026
08f66b6
feat(import): native OLMDBManager auto-import for desktop
joselaguilarhz Jun 8, 2026
89708d3
fix: remove stale AppData/data candidate from resolve_data_base — sin…
NicoRuedaA Jun 8, 2026
844c3c9
fix: OVR 0 for all players — refresh lol_ovr on load + safety net in …
NicoRuedaA Jun 8, 2026
b7444f3
fix(players): resolve team logo by team_id with logo_url instead of n…
NicoRuedaA Jun 8, 2026
2059845
docs: add _HOME_TAB.md explaining dashboard/inicio architecture
NicoRuedaA Jun 8, 2026
2a7e5c0
docs: rename _HOME_TAB.md → _DASHBOARD_HOME.md
NicoRuedaA Jun 8, 2026
95234d3
feat(messages): template-based message system with data/messages/ + s…
NicoRuedaA Jun 8, 2026
2025bc6
feat(messages): template system with inline translations + trigger-ba…
NicoRuedaA Jun 8, 2026
f7f348b
fix: correct template store init path + add debug logging
NicoRuedaA Jun 8, 2026
7abf0be
fix: pass user language from frontend to welcome_message for translat…
NicoRuedaA Jun 8, 2026
6dfb945
feat: add tournaments tab and integrate into dashboard
joselaguilarhz Jun 8, 2026
068065f
feat(messages): separate senders store from message templates
NicoRuedaA Jun 8, 2026
015b10c
feat(messages): migrate 6 message functions to template store
NicoRuedaA Jun 8, 2026
0e66df6
feat(messages): migrate Fase 3 messages with multiple variations
NicoRuedaA Jun 8, 2026
e8249cb
feat(messages): Fase 4 — high-density media messages (60 templates)
NicoRuedaA Jun 8, 2026
52b6a0d
refactor: move senders under data/messages/senders/ + add with_sender…
NicoRuedaA Jun 8, 2026
04762ee
docs: add _DASHBOARD_MESSAGES.md explaining the Inbox system
NicoRuedaA Jun 8, 2026
b869ad5
refactor: move message templates to data/messages/triggers/
NicoRuedaA Jun 8, 2026
07bd1ee
fix: add staff_file to competition manifests to load staff data
NicoRuedaA Jun 8, 2026
8302e3a
feat(assets): add message sender icons for inbox
NicoRuedaA Jun 8, 2026
1b75977
chore: clean up dead Tournaments files + fix sender icon typos
NicoRuedaA Jun 8, 2026
2860588
fix: remove remaining TournamentsTab imports from DashboardV2 and Das…
NicoRuedaA Jun 8, 2026
c53735a
refactor: update Select component styling and remove injury attribute…
joselaguilarhz Jun 8, 2026
c74c3e5
Merge remote-tracking branch 'upstream/main'
joselaguilarhz Jun 8, 2026
62996cf
fix(web): remove dangling TournamentsTabV2 usage left by upstream cle…
joselaguilarhz Jun 8, 2026
823a8b5
docs: add dashboard architecture and problems docs for scrims, meta, …
NicoRuedaA Jun 8, 2026
cd70a6b
fix(dashboard): wire up exit without save button
NicoRuedaA Jun 8, 2026
e952738
feat: squad lineup selector, time_blocker fix, champion loop fix, war…
NicoRuedaA Jun 8, 2026
f0c921c
fix: time_blocker bug (valid_saved_ids ignored for LoL), auto-lineup …
NicoRuedaA Jun 8, 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
  •  
  •  
  •  
17 changes: 17 additions & 0 deletions .agents/skills-lock.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"version": 1,
"skills": {
"documentation-and-adrs": {
"source": "addyosmani/agent-skills",
"sourceType": "github",
"skillPath": "skills/documentation-and-adrs/SKILL.md",
"computedHash": "d751b98cb2894feb833af869f397aaaadd9a3a679882331c1a5b254e8ed1399a"
},
"documentation-writer": {
"source": "github/awesome-copilot",
"sourceType": "github",
"skillPath": "skills/documentation-writer/SKILL.md",
"computedHash": "ee53d65b163cd7eb953a930c95841cfe398cc2c0bd24c06508bbaa07c432be35"
}
}
}
278 changes: 278 additions & 0 deletions .agents/skills/documentation-and-adrs/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,278 @@
---
name: documentation-and-adrs
description: Records decisions and documentation. Use when making architectural decisions, changing public APIs, shipping features, or when you need to record context that future engineers and agents will need to understand the codebase.
---

# Documentation and ADRs

## Overview

Document decisions, not just code. The most valuable documentation captures the *why* — the context, constraints, and trade-offs that led to a decision. Code shows *what* was built; documentation explains *why it was built this way* and *what alternatives were considered*. This context is essential for future humans and agents working in the codebase.

## When to Use

- Making a significant architectural decision
- Choosing between competing approaches
- Adding or changing a public API
- Shipping a feature that changes user-facing behavior
- Onboarding new team members (or agents) to the project
- When you find yourself explaining the same thing repeatedly

**When NOT to use:** Don't document obvious code. Don't add comments that restate what the code already says. Don't write docs for throwaway prototypes.

## Architecture Decision Records (ADRs)

ADRs capture the reasoning behind significant technical decisions. They're the highest-value documentation you can write.

### When to Write an ADR

- Choosing a framework, library, or major dependency
- Designing a data model or database schema
- Selecting an authentication strategy
- Deciding on an API architecture (REST vs. GraphQL vs. tRPC)
- Choosing between build tools, hosting platforms, or infrastructure
- Any decision that would be expensive to reverse

### ADR Template

Store ADRs in `docs/decisions/` with sequential numbering:

```markdown
# ADR-001: Use PostgreSQL for primary database

## Status
Accepted | Superseded by ADR-XXX | Deprecated

## Date
2025-01-15

## Context
We need a primary database for the task management application. Key requirements:
- Relational data model (users, tasks, teams with relationships)
- ACID transactions for task state changes
- Support for full-text search on task content
- Managed hosting available (for small team, limited ops capacity)

## Decision
Use PostgreSQL with Prisma ORM.

## Alternatives Considered

### MongoDB
- Pros: Flexible schema, easy to start with
- Cons: Our data is inherently relational; would need to manage relationships manually
- Rejected: Relational data in a document store leads to complex joins or data duplication

### SQLite
- Pros: Zero configuration, embedded, fast for reads
- Cons: Limited concurrent write support, no managed hosting for production
- Rejected: Not suitable for multi-user web application in production

### MySQL
- Pros: Mature, widely supported
- Cons: PostgreSQL has better JSON support, full-text search, and ecosystem tooling
- Rejected: PostgreSQL is the better fit for our feature requirements

## Consequences
- Prisma provides type-safe database access and migration management
- We can use PostgreSQL's full-text search instead of adding Elasticsearch
- Team needs PostgreSQL knowledge (standard skill, low risk)
- Hosting on managed service (Supabase, Neon, or RDS)
```

### ADR Lifecycle

```
PROPOSED → ACCEPTED → (SUPERSEDED or DEPRECATED)
```

- **Don't delete old ADRs.** They capture historical context.
- When a decision changes, write a new ADR that references and supersedes the old one.

## Inline Documentation

### When to Comment

Comment the *why*, not the *what*:

```typescript
// BAD: Restates the code
// Increment counter by 1
counter += 1;

// GOOD: Explains non-obvious intent
// Rate limit uses a sliding window — reset counter at window boundary,
// not on a fixed schedule, to prevent burst attacks at window edges
if (now - windowStart > WINDOW_SIZE_MS) {
counter = 0;
windowStart = now;
}
```

### When NOT to Comment

```typescript
// Don't comment self-explanatory code
function calculateTotal(items: CartItem[]): number {
return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
}

// Don't leave TODO comments for things you should just do now
// TODO: add error handling ← Just add it

// Don't leave commented-out code
// const oldImplementation = () => { ... } ← Delete it, git has history
```

### Document Known Gotchas

```typescript
/**
* IMPORTANT: This function must be called before the first render.
* If called after hydration, it causes a flash of unstyled content
* because the theme context isn't available during SSR.
*
* See ADR-003 for the full design rationale.
*/
export function initializeTheme(theme: Theme): void {
// ...
}
```

## API Documentation

For public APIs (REST, GraphQL, library interfaces):

### Inline with Types (Preferred for TypeScript)

```typescript
/**
* Creates a new task.
*
* @param input - Task creation data (title required, description optional)
* @returns The created task with server-generated ID and timestamps
* @throws {ValidationError} If title is empty or exceeds 200 characters
* @throws {AuthenticationError} If the user is not authenticated
*
* @example
* const task = await createTask({ title: 'Buy groceries' });
* console.log(task.id); // "task_abc123"
*/
export async function createTask(input: CreateTaskInput): Promise<Task> {
// ...
}
```

### OpenAPI / Swagger for REST APIs

```yaml
paths:
/api/tasks:
post:
summary: Create a task
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTaskInput'
responses:
'201':
description: Task created
content:
application/json:
schema:
$ref: '#/components/schemas/Task'
'422':
description: Validation error
```

## README Structure

Every project should have a README that covers:

```markdown
# Project Name

One-paragraph description of what this project does.

## Quick Start
1. Clone the repo
2. Install dependencies: `npm install`
3. Set up environment: `cp .env.example .env`
4. Run the dev server: `npm run dev`

## Commands
| Command | Description |
|---------|-------------|
| `npm run dev` | Start development server |
| `npm test` | Run tests |
| `npm run build` | Production build |
| `npm run lint` | Run linter |

## Architecture
Brief overview of the project structure and key design decisions.
Link to ADRs for details.

## Contributing
How to contribute, coding standards, PR process.
```

## Changelog Maintenance

For shipped features:

```markdown
# Changelog

## [1.2.0] - 2025-01-20
### Added
- Task sharing: users can share tasks with team members (#123)
- Email notifications for task assignments (#124)

### Fixed
- Duplicate tasks appearing when rapidly clicking create button (#125)

### Changed
- Task list now loads 50 items per page (was 20) for better UX (#126)
```

## Documentation for Agents

Special consideration for AI agent context:

- **CLAUDE.md / rules files** — Document project conventions so agents follow them
- **Spec files** — Keep specs updated so agents build the right thing
- **ADRs** — Help agents understand why past decisions were made (prevents re-deciding)
- **Inline gotchas** — Prevent agents from falling into known traps

## Common Rationalizations

| Rationalization | Reality |
|---|---|
| "The code is self-documenting" | Code shows what. It doesn't show why, what alternatives were rejected, or what constraints apply. |
| "We'll write docs when the API stabilizes" | APIs stabilize faster when you document them. The doc is the first test of the design. |
| "Nobody reads docs" | Agents do. Future engineers do. Your 3-months-later self does. |
| "ADRs are overhead" | A 10-minute ADR prevents a 2-hour debate about the same decision six months later. |
| "Comments get outdated" | Comments on *why* are stable. Comments on *what* get outdated — that's why you only write the former. |

## Red Flags

- Architectural decisions with no written rationale
- Public APIs with no documentation or types
- README that doesn't explain how to run the project
- Commented-out code instead of deletion
- TODO comments that have been there for weeks
- No ADRs in a project with significant architectural choices
- Documentation that restates the code instead of explaining intent

## Verification

After documenting:

- [ ] ADRs exist for all significant architectural decisions
- [ ] README covers quick start, commands, and architecture overview
- [ ] API functions have parameter and return type documentation
- [ ] Known gotchas are documented inline where they matter
- [ ] No commented-out code remains
- [ ] Rules files (CLAUDE.md etc.) are current and accurate
45 changes: 45 additions & 0 deletions .agents/skills/documentation-writer/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
name: documentation-writer
description: 'Diátaxis Documentation Expert. An expert technical writer specializing in creating high-quality software documentation, guided by the principles and structure of the Diátaxis technical documentation authoring framework.'
---

# Diátaxis Documentation Expert

You are an expert technical writer specializing in creating high-quality software documentation.
Your work is strictly guided by the principles and structure of the Diátaxis Framework (https://diataxis.fr/).

## GUIDING PRINCIPLES

1. **Clarity:** Write in simple, clear, and unambiguous language.
2. **Accuracy:** Ensure all information, especially code snippets and technical details, is correct and up-to-date.
3. **User-Centricity:** Always prioritize the user's goal. Every document must help a specific user achieve a specific task.
4. **Consistency:** Maintain a consistent tone, terminology, and style across all documentation.

## YOUR TASK: The Four Document Types

You will create documentation across the four Diátaxis quadrants. You must understand the distinct purpose of each:

- **Tutorials:** Learning-oriented, practical steps to guide a newcomer to a successful outcome. A lesson.
- **How-to Guides:** Problem-oriented, steps to solve a specific problem. A recipe.
- **Reference:** Information-oriented, technical descriptions of machinery. A dictionary.
- **Explanation:** Understanding-oriented, clarifying a particular topic. A discussion.

## WORKFLOW

You will follow this process for every documentation request:

1. **Acknowledge & Clarify:** Acknowledge my request and ask clarifying questions to fill any gaps in the information I provide. You MUST determine the following before proceeding:
- **Document Type:** (Tutorial, How-to, Reference, or Explanation)
- **Target Audience:** (e.g., novice developers, experienced sysadmins, non-technical users)
- **User's Goal:** What does the user want to achieve by reading this document?
- **Scope:** What specific topics should be included and, importantly, excluded?

2. **Propose a Structure:** Based on the clarified information, propose a detailed outline (e.g., a table of contents with brief descriptions) for the document. Await my approval before writing the full content.

3. **Generate Content:** Once I approve the outline, write the full documentation in well-formatted Markdown. Adhere to all guiding principles.

## CONTEXTUAL AWARENESS

- When I provide other markdown files, use them as context to understand the project's existing tone, style, and terminology.
- DO NOT copy content from them unless I explicitly ask you to.
- You may not consult external websites or other sources unless I provide a link and instruct you to do so.
Loading
Loading