# Features — scoringApp

Evidence date: 2026-10-04. Source: `git@bitbucket.org:overdrive/scoringapp.git`, `master` at `04b1a38`.

Provenance labels: **Documented**, **Implemented**, **Inferred**, **Planned**, **Unknown**.

Feature names below are taken from window titles, tab labels, button text, commit messages, or handler names. There is no `features.md` or changelog in the source repository.

## Current (on `master`)

| Feature | What it does | Evidence |
|---|---|---|
| Sideline Manager shell | Borderless maximized window, custom exit | `MainWindow.xaml` title; `Listfixturs.Exit_app`, `Scoring.Exit_app` |
| Online login | QA login API, then local `LoggedIn` flag | `Login.xaml.cs`, `Classes\Loginn.cs` |
| Stay signed in | Next launch skips login when `LoggedIn = 1` | `MainWindow.load` |
| Logout | Clears `LoggedIn` and shows login | `Listfixturs.Logout_MouseDown` |
| Fixture download | Pulls fixtures, lineups, officials, point values, timers | `Webservices.GetNewData` |
| Fixture list | Grouped by date; time, teams, scores, venue | `Listfixturs.getFixtures` |
| Match screen tabs | COMMENTARY, SCORES, MOVEMENTS, STOPPAGES, LINEUP | `Scoring.xaml` |
| Session clock | Match start, half ends, extra time, end game, abandon | `Scoring.GetSessionBTNS`, `GameEnd_Action`, `Button_Click_AbandonMatch` |
| Time off / time on | Pause with a reason list; resume writes duration | `Pause_Game`, `Resume_Game`, `StoppageReason_Click` |
| Score events | Try, conversion, penalty, drop goal, penalty try, and event 53 | `Scoring.Player_clicked`, `Classes\Score.cs` |
| Live scoreboard | Home and away tries, conversions, penalties, penalty tries, drop goals, subs, yellow cards, red cards, half and full figures | `Scoring.GetFixture` |
| Yellow-card timer | Sin-bin clock from `YellowCardTimer` minutes; location 3 | `Scoring.CreateTimers`, `Teams.GetYellowCards` |
| Second yellow becomes red | If the player already has an event-11 commentary row | `Scoring.CreateTimers`, `Second_Yellow_Card_Process_Data` |
| Red card | Location 4; player cannot be selected again | `Red_Card_Process_Data`, `Player_clicked` |
| Blood and HIA timers | Lengths from `BloodTimer` and `HIATimer` | `Scoring` fields `timesecBloodTimer`, `timesecHIATimer`; injury clock handlers |
| Substitutions | Player off, then a replacement whose current position is above `Fixture.Code`; positions swap | `Show_Subtitution`, `SubsPositonUpdate` |
| Substitution while paused | Push, park/confirm, and injury actions can be queued until Time ON | `Resume_Game` and `PushOnResume`, `InjuryOnResume`, `InjuryPermanentOnResume`, `InjuryReverseOnResume` |
| Lineup board | Positions 1..`Code` with name, jersey, and `Front` | `Scoring.getLineUpTab` |
| Match officials on the fixture | Referee, assistant referee 1, TMO | `Webservices.SetFixture` |
| Commentary edit and delete | Edit popup; delete confirm; card and sub rollback | `Edit_Clicked`, `Confrim_delete`. List-file comment dated 20191004 attributes edit/delete UI to maanie |
| Commentary upload | JSON of the fixture commentary to the QA upload API | `Scoring.Upload_data`, `Webservices.PostComment` |
| Reset match data | Deletes that fixture's commentary and zeroes status and clocks | `Scoring.Border_MouseDown` |
| MSI installer | Sideline Manager 1.0.3, manufacturer Evolve, removes previous versions | `SidelineApp-Setup.vdproj` |

## Completed relative to Git history

These are described as done by commit messages on the way to `04b1a38`. They are present in the tip, not a separate released artefact.

| Commit message (paraphrased only where the subject is the evidence) | Tip evidence |
|---|---|
| `abfb61d` Substitutions workflow done | Substitution handlers in `Scoring.xaml.cs` |
| `cdd8d70` Time off / time on substitution workflow | `Pause_Game` / `Resume_Game` |
| `d0938d7` Injury workflows, commentary edit, venue on fixtures | Injury handlers; `Listfixturs` venue column |
| `197c2b2` Commentary delete and edit, injury workflows, ready for testing | `Confrim_delete`, `Edit_Clicked` |
| `8c56d60` Commentary edit for tries | Edit popup still on the scoring page |
| `7242b0f` Referees added to the lineup tab | Officials are stored in `SetFixture`. The lineup grid itself shows players, not officials. **Unknown** which control on the lineup tab displays the referee names |
| `1d94b81` DB location changed to `%AppData%/Sideline Manager` | `SqlDatabase.dbPath` |
| `640ce5b` / `04b1a38` QA deploy 1.0.2 then deploy V1.0.3 Beta | Installer `ProductVersion` 1.0.3 |

## In development

No branch is checked out as the active product, and no issue file in the repo marks work in progress. Remote heads that still exist and were not compared to `master`:

`Code_Rework`, `Dev`, `NewSubsWorkflow`, `SA-61_Scoring_Page`, `hdp-test`, `hdp-test1`, `qa`, `qa-20-12-2022`, `qa-21-12-2022`, `qa-22-12-2022`, `styling-16-12-2022`, `sync-fixtures-startup-19-12-2022`.

`master` tip merges `NewSubsWorkflow` via `48a8005` ("Merge branch 'NewSubsWorkflow' into qa-22-12-2022"), so that branch's December 2022 work is at least partly on `master`. Anything committed on the remote branch after that merge is **Unknown**.

## Planned

No roadmap or ticket list is stored in the repository. Do not treat empty methods as a plan.

| Code that does not finish the action | Path |
|---|---|
| Clock edit save | `Scoring.Update_clock_time` empty; `Add_Process` and `Minus_Process` empty |
| Upload icon on the fixture list | `Listfixturs.Upload_data` empty |
| `FP LiveScoring V1` download, upload, back, and exit | `FP LiveScoring V1\MainWindow.xaml.cs` empty handlers. Project is not in `Live_Scoring_V1.sln` |
| Blue-card click | `Player_clicked` case 45 has an empty body |
| ClickOnce update | csproj `UpdateEnabled` is false |

## Recently changed

"Recent" here means the last commits on `master` (December 2022), not changes since this documentation was written. The newest subject is `Deploy V1.0.3 BEta` (`04b1a38`). The commits under it adjust the time-off button and extra time (`99e6fe6`), the title and taskbar icon (`ff69b73`), and commentary edit for tries (`8c56d60`).

## Deprecated or removed

| Item | Evidence | Status |
|---|---|---|
| Production API host | Login, download, and upload URLs for `footprintapp.net` are commented. QA host is active | **Implemented** switch, not a deleted product |
| Local yellow-card table | `CREATE TABLE YellowCards` is commented out in `CreateDataBase` | **Implemented** as unused SQL. Cards are commentary rows plus `Teams.Location` |
| `Master.xaml` | File is on disk. It is not an item in `Live_Scoring_V1.csproj` | Not part of the compiled project |
| `Live Scoring\Live Scoring.vdproj` | Older setup project name. Not listed in `Live_Scoring_V1.sln` | Superseded by `SidelineApp-Setup` for the solution build |
| `GetTeamLineUp` | Commented method on `Teams` | Not called |
| Main-window connectivity timer | `CheckConnection` body is commented and the timer is not started | **Implemented** as dead code |

## Not features

- `Test.xaml` / `Window1.xaml` are compiled pages. `MainWindow` does not navigate to them (the `Test` navigation is commented out).
- `Players.cs` is an empty class.
- Sonar scanner files named in the onboarding issue are not on this `master` commit.
