Repository navigation
Releases: modirniya/gitgame
Release list
v0.5.0
A page and a panel for people who know nothing about Git, and the deck's cover names its licence.
Added
- A page for people who know nothing about Git, or coding, at
/new-to-git: what Git is, as a tower built by many hands; the five things that go wrong and Git's words for them; how a game goes; the words, one line each. The landing page gains a highlighted plain-words panel right after the hero that leads to it, and every header a "new to Git?" link, first.
Changed
- The print-and-play deck's cover names its licence, CC BY-SA 4.0 (ADR-0010), and where the deck came from, so a printed copy carries both.
v0.4.0
Pages beside the game: what Git said, line by line, and the ways out of it; a lesson for teachers, with the deck to print; a game for teams.
Added
- Pages about Git's output, under
/git(M16): the door, and the first page,! [rejected] main -> main (non-fast-forward): what Git checked, the two hints it prints, the pull that fixes it, and why a day of the game does it to you. Every line is captured from a real Git byscripts/git-output.sh, never typed, and the page names the Git that printed it. The landing page's header links to the door. - Four more pages under
/git:(forced update)and what--force-with-leaserefuses,CONFLICT (content)and resolving it by merge, by rebase and by-X oursor-X theirs, the two spellings of nothing to do (Already up to date.andEverything up-to-date), and the three ways a pull lands:Fast-forward,Successfully rebasedandMerge made. - The ways out, five pages under
/git: someone force-pushed over my commit (and thepull --rebasethat would drop it), my push was rejected, I lost a commit (a reset too far, a deleted branch, a dropped rebase, all back from the reflog), who broke main (blame,log -S,bisect run), and undoing a commit that's on main (revert, and why a reset and a push won't). - A page for teachers at
/teach(M16d): a 45-minute lesson on 60-second days, a map from what happened in the game to what it is in Git, how to run it in a class, and the print-and-play deck, served at/print-and-play.pdf. The landing page's header links to it, and every page under/gitlinks to it and to the next. The pages' prose and the deck are under CC BY-SA 4.0 (ADR-0010); every page's footer says so. - A page for teams at
/teams(M16e): a game of Git inside a meeting you already have, in three lengths (fifteen minutes on 60-second days, an hour on 5-minute days, a week on 24-hour days), the runbook, three questions for the minutes after, and seven conventions each linking to its page. The landing page's header and every other page link to it.
v0.3.5
v0.3.4
The pulse counts from a fresh start, without the team's test players.
Changed
- The maintainer's pulse at
/statscounts from a fresh start and leaves out the team's test players:STATS_SINCE, a moment to count from, andSTATS_TEAM, their handles, both secrets on the deployment. The page says what it leaves out. Nothing is deleted: the beta's data is all kept, and the report still reads it.
v0.3.3
A private pulse for the maintainer at /stats.
Added
- A private pulse for the maintainer at
/stats(M13e): when a person last sent a pack, when the last game started and how many games are in progress, the totals, and bars of new players, games started, packs sent by people and visits, by day, week or month. Everyone counts alike, tests included. It's behindSTATS_TOKEN, given as the browser's password, and isn't there at all until the token is set (GET /api/stats).
v0.3.2
The hand is laid out for the screen it's on: a grid on a phone, a fan on a laptop.
Changed
- The hand is laid out for the screen it's on. On a phone it's a grid, as many columns as keep the longest file name on one line, with nothing overlapping and every card printed in full. On a laptop it still fans, every card solid, and where the fan is tight each card is printed like a playing card's corner: its lines at the top of the strip the next card leaves showing, its file or command running down the edge. This replaces 0.3.1's see-through cards and labels at two heights.
Fixed
- A command's name wraps at its spaces, never inside a flag:
pushover--force, notpush --overforce.
v0.3.1
A fanned hand can be read card by card.
Fixed
- Every card in a tightly fanned hand can be read. Overlapped cards are see-through below their band, each card's file and lines sit at the edge the next card leaves showing, and where the cards are too close for that, every other card puts its label low, so a label that runs under its neighbour shows through the half of it that has none. The BUG tag moves into the band's corner, and a selected card shows its ring again.
v0.3.0
The game feels and looks like the mobile prototype (M15): every op you write is answered on the hub as you write it, and every day's close plays back step by step on main as it stood, ending on what your pack did and where you stand. The bot is a character again, the guided first game lands its first push and goes on to day 3, and Git's output is Git's own. The online rules are unchanged.
Added
- A hint on the hub, as the prototype had (M15k): "hint" shows the pack a good player would write today, the bot's own policy run on your seat's view, with its first reason, and writes it into your pack on a tap.
- The game's view carries, for each closed day,
main, the pointers and the scores as the day opened (opened), so a client can draw the table at every step of the day's playback (M15f). Replays carry them too. - The remote answers "what would a good player do now?" (
GET /api/games/:id/hint): the pack the bot's own policy would write from your seat's view, knowing nothing you don't, each op with its why in your words ("you pull first, in case someone pushes before you"), for the hub's hint (M15k). Nothing is sent.
Changed
- Every screen of a game sits in a frame, as in the prototype (M15b): a status bar with the day,
mainagainst the release size, the ops your pack leaves as pips, the live score and the Table, which opens as a sheet over the screen on a phone and stays beside it on a laptop. On a phone the game fills the screen and the answer sits at the thumb: send, continue and skip never scroll away. A day opens with its incident dealt, your draws, today's ops, and whether you are at the tip or behind. A moment's screen is titled with its command, Git's output under it. - The game looks like the mobile prototype (M15c): prose in a sans-serif and Git in monospace; cards with a colored band saying what they are, the BUG tag where a fanned hand can't hide it, and face-down commits as a hatch showing their hash;
mainwith each commit labelled by who pushed it and what it announced, its tip marked, and the pointers as chips; the Table's seats with their tokens. The landing page and its link preview follow. - The hub is a table, as in the prototype (M15d): your branch shows where you stand and, as you write the pack, what it leaves staged and to push, with the commit it pushes waiting past the tip of
main; the four actions (git add,git commit,git push,git pull) sit at the thumb with their cost and what each would do; picking a command card from the hand brings up its action, and the tag appears oncemainis the release size; undo takes back the last op. The online incidents say "today", not the tabletop's "this round". - Each op you write is answered on the hub as you write it (M15e): the card flies from your hand into staging, the staged cards stack into one commit, the commit flies to "your push" past the tip of
main, and a pull slides your pointer to the tip; a one-line receipt at the thumb says what the op will do. The hub keeps its scroll as it changes. Nothing moves underprefers-reduced-motion. - A day's close plays back as the prototype played a turn (M15f): step by step in the order the remote ran the packs, each on
mainas it stood at that point, with its motion (a push's commit arriving at the end ofmain, a pointer sliding to the tip, a blamed commit turning over, what a force-push erased falling away, a push knocked back off the tip). Every remote op of yours gets a step, including a push that didn't run because the budget ran out; the bot's routine folds into fewer steps that move on by themselves. Each day ends on its receipt: what your pack did, the score the day changed, and where you now stand, the one screen "skip" never passes. - The bot is a character again (M15g): on each of its steps, its avatar, its ops counted as dots, and a speech bubble saying why it played the op and how that went, so it no longer says it "ships what it has committed" before a push that finds nothing to ship. Someone else's conflict says what it did to the table, a push that didn't fit the budget says why, and what blame found is a
#note, as Git's blame judges nothing. - The guided first game goes on past day 1 (M15h): the guide counts its ten steps at the top of the screen, where it never covers what it points at, speaks while the day plays back (your push landing, the day's end), builds a second commit on day 2 and explains what the day's order did, catching you up with a pull when the bot's push lands first, and lets go on day 3.
- A player's first game against the bot is dealt so that its first day is a full one, with a clean card to play, and their pack resolves first, so their first push lands (M15h). The remote chooses the game's seed; the rules are those of any game.
- The release plays as in the prototype (M15i): CI turns the real commits on
mainface-up one after another, the bugs that reached production turning red, then stamps the tally. The scoreboard reads across: a headline, who won in their color, each part of the score in a column per player (yours first), the totals, and what decided it. When production is down, the least blame wins, as the remote has always counted it, and the scoreboard now says so. - On a laptop the Table beside the screen keeps a log of every day, newest first, as the prototype's panel did, and while a day plays back it shows
mainas the step left it and the log up to the day before (M15j).
Fixed
- The hub's four actions have names a screen reader can say ("git add, 1 op: stage 1 card, +5"), as the prototype's did, and the bot's avatar style no longer reaches a linked player's GitHub avatar.
- A long handle no longer widens its slot on
main(its chip and label are cut short), a slot with two pointers keeps its card level with the others, a day's receipt puts what each op did under its command, the day's score changes are plain chips, and another player's staging is a#note, as Git says nothing of it. Found playing a room against a second person and a hotseat game at 390 × 844. - Git's output wraps on a phone instead of hiding the end of a long line behind a sideways scroll (M15a).
- A pull's conflict strategy is offered by what it does (keep theirs, keep mine, keep both by hand) and printed as Git's flag, which swaps
oursandtheirsunder--rebase; keeping both prints no flag, as in Git. What a rule took (a dropped or crossed-out commit, a merge token, what a force-push erased) is a#comment, not a line in Git's voice, and a failed command names its target (M15a). - A commit starts with a real message for the files staged, with others to pick from, instead of
git commit -m ""(M15a). - A pack can tag v1.0 only once (M15a).
- A pull whose conflict is settled by
-X oursor-X theirsprints what Git prints:Auto-mergingand a merge, or under--rebasethe commits it dropped andSuccessfully rebased, rather than a CONFLICT and, when-X theirstook your only commit, aFast-forward. CONFLICT is printed only for--resolve, resolved by hand, and apull --rebasewith nothing of yours is a fast-forward, as in Git. - A failed
git blameorgit revertnames its commit in the day log, and the bot no longer blames a commit that its own force-push erased earlier in the same pack, which failed withfatal: no such commit.
v0.2.1
v0.2.0
gitgame.online becomes a landing page for the public launch, and the game moves to /play (ADR-0009).
Added
- A landing page at gitgame.online (ADR-0009): what the game is, how a day plays, and questions answered, as plain HTML that search engines read without running anything, with a title and description, Open Graph and X previews (a 1200×630 image), structured data,
robots.txtand a sitemap. "play" leads to the game at/play.
Changed
- The game moved to
/play(ADR-0009), so gitgame.online can be the landing page. Every link the game, its emails and its notifications write points to/play, room links included, and links from before the move still arrive: those with a query (/?via=…) by a redirect, and those with only a hash (/#/room/…) by the landing page's script. The installed app opens at/play.