[Dev] 0.1 "Babylon" Release Planning

I agree on including combat. My remaining "AI won't build cities" PR also adds a couple more AI players (three total; we could bump it beyond that but three is much better than one), as well.

I also agree that we need a policy of "if not reviewed within X time, it can be merged." Caro-Kann (Lucien) proposed 5 days. I think two weeks is a little bit too long as if there is a period of time where one person is doing a lot, that can be a lot of PRs being introduced and building off of each other. I saw that in February when there was a time when I was creating about one per day. I tried to keep them seperately mergable in some cases (in others that was not feasible), but even so there wound up being conflicts between them. Perhaps 1 week is a good balance? I'll also note that this makes 3 of the top 5 contributors who have said we should have this (regardless of the precise time); I don't think Puppeteer has commented, and WildWeazel advocated for the review process, but I don't think has specifically commented on this proposal.

One of the teams I worked on had a process of two tiers of reviews, for just the "it doesn't feel appropriate to approve it since I haven't done a real review, but I have no objections" category. They had a +2 approval for "I've done a real review", and a +1 approval for "I've looked at it and have no objections, but don't feel comfortable saying it's definitely good," which was commonly used when reviewing areas of the code that you didn't have a great deal of expertise in - you didn't see anything flawed, but weren't an expert in the area, or perhaps you took a more cursory glance at it due to time constraints (the team, which was much larger than ours, and a commercial team where most people were there most days, required two +2 and two +1 approvals, so that could still help it move through the process).

I kind of did the same thing with the "static variable in Util", noting that it looked good to me and I'd tested it on Windows (but not elsewhere). I guess I'd say it's better to leave a comment saying what you mentioned here, since it still increases the confidence somewhat, but not necessarily giving the full review-approval if it doesn't seem appropriate. In the "static variable in util" case, my best guess is it hasn't been merged since Puppeteer has been working on other things? In a couple other cases where the contributor of a PR had gone idle and the PR's work was something I neeeded to build on, I eventually merged it myself, but since that one hasn't blocked me I haven't done so. But realistically, we probably need to say, "if a PR has been approved for X days, anyone can merge it."

The same +2/+1 approval team was one that tended to have a lot of large PRs ("large" in this case being 1000+ lines). I spent a lot of time thinking about PRs on that team, and concluded the point at which my motivation starts to noticeably wane is around 300 lines, and that there's at least a bit of a quadratic element to it, rather than purely linear. I was reminded of it recently while reading an article on Utah's BAC (blood alcohol content) limit of 0.05. They mentioned that research shows the effect of impairment on a driver is not linear, but again somewhat quadratic, but until the 0.04-0.05 range it's low enough to not be really noticeable. But someone who has a BAC of 0.16 is functionally much more impaired - noticeably more than double - than someone just at the typical state's 0.08 limit. It's similar with PRs for me. Three 300-line PRs is less work than one 900-line PR. Even considering that breaking it up into smaller chunks might result in more net lines changed (maybe that 900-line PR becomes four 300-line PRs), I'd rather have the smaller ones.

I've tried to follow that with the Settler AI merges; it's definitely not complete, but each one makes it a little better. When there are larger merges, having notes of "there are basically three entry points: SomeClass.cs, SomeOtherClass.cs, and ThirdClass.cs", or some other indication as to the high level structure would help. Sometimes I'll break large ones down by commits, but that isn't as feasible when there are dozens of commits. And it winds up being the case where, if I'm getting paid to review those large changes, they'll get done (but more slowly than if they had been several smaller ones), but if I'm not getting paid for it, it's hard to resist making improvements to my Civ3 scenario editor, or watching an Arnold movie, instead. (Although today's choice, of enjoying the first warm weather day of the year, would have been selected no matter how appealing any potential PRs were)

Looks like the Threaded arch one is only 1349 lines when whitespace diffs are hidden, though...
 
By the way, what's going on with that "Static variable in Util" PR that was approved a month ago but still hasn't been merged?

It's the patch that gives you a button to select the Civ3 home folder if the location isn't in the registry and CIV3_HOME doesn't exist.

I'm not really vibing with the current PR/review/merge process, or even if there is one, so I'm not really pulling any triggers myself. And since this adds a button to main menu I don't even know if the .tres file will merge with the current head anymore and/or pending PRs.
 
It's the patch that gives you a button to select the Civ3 home folder if the location isn't in the registry and CIV3_HOME doesn't exist.
That sounds like something we'd want sooner rather than later. Since it's approved, you could just merge it in, no ceremony necessary. I don't know about conflicts with .tres files, honestly I don't even know what a .tres file is. I've been avoiding the Godot editor entirely, whenever I need to create a node of some kind, I do it in code. Maybe that's not practical for entire scenes.

On a semi-related note, I've been getting a strange little bug for a few months now: the first time I launch C7 after booting my Windows machine, it can never find the registry key, I just see that message about setting CIV3_HOME, etc. If I simply close the game and restart it then it works, and it works every time until I reboot. Have any of you seen this? It's not a problem for me but if someone unfamiliar with the project sees this bug they might give up instead of trying again.
 
On a semi-related note, I've been getting a strange little bug for a few months now: the first time I launch C7 after booting my Windows machine, it can never find the registry key, I just see that message about setting CIV3_HOME, etc. If I simply close the game and restart it then it works, and it works every time until I reboot.

That's bizarre. There was an odd issue if the key (distinct from the value) was flat-out missing on Windows, but I can't think of a reason it would fix itself after a restart of C7.

But for the heck of it, does #111 https://github.com/C7-Game/Prototype/commit/6a4d60e0787be677db58b5912fdb576da1bc7587 have any positive or negative effect on the situation? I can't really see why it would, but it's an issue that popped up when Quintillus looked at the home selector in question, and the fix has been merged without the PR that exposed it. (It shouldn't matter in this case, but it also shouldn't be broken before or after, so clearly we're missing something here.)

Oh, I just had an idea: Are you, by any chance, trying to run C7 in 32-bit mode? The registry key it looks for is different from 32-bit and 64-bit modes and we're only checking the 64-bit location for now. But while we're thinking of it, maybe we should check the 32-bit location, too, if the 64-bit location fails.

(To clarify, in 32-bit mode Windows uses "Windows on Windows" which includes a special registry; 32-bit programs' registry entries appear in a different place in the registry when viewed by a 64-bit executable. Since Civ3 is 32-bit only, its registry entry is in the Wow6432Node subkey with all the other 32-bit stuff.)

Actually, on further thought, I don't think it's possible to run C7 in 32-bit mode, but I guess the question stands, anyway.

Edit: I went ahead and merged the civ3 home selector. I said .tres, but it was actually the .tcsn I was worried about, but that was fine. I did have to manually merge some of MainMenu.cs, but I accepted all changes; git didn't know what to do with two additions to code in two of the same locations. Note that you probably want to use Util.Civ3Root now instead of calling GetCiv3Path(). I did notice the load scenario dialog got lost when I ran on Mac without CIV3_HOME set, but I didn't investigate further. It's not broken, just not defaulted to the scenario folder.
 
Last edited:
What's left for Babylon:
- "AI Won't Build Cities" PR
- My combat PR: I'm planning to merge this at the end of the week (Sunday March 13) whether or not it's been reviewed. It's already been open for 12 days so anyone who cares will have had plenty of time to review it. Although I'd like to merge it after the "AI Won't Build Cities" PR so I can bring it up to date with Development all at once.
- "Added BonusShield" PR: If I'm understanding it right, it doesn't change the gameplay or even the appearance of the game at the moment, so it could easily be left for later.
- Custom menu background
- Horses on every tile bug
- Default to 100% zoom: Mentioned in the OP, I agree we should do this. This also reminded me of something, we should start with the camera focused on the player's units.
Anything else? I'm done with the right click menu for now so we could slip that into Babylon but maybe it's better to call it here. We should aim for a release in two weeks or so.

I also agree that we need a policy of "if not reviewed within X time, it can be merged." Caro-Kann (Lucien) proposed 5 days. I think two weeks is a little bit too long
I was thinking of my own combat PR when I said two weeks, I think it's a good time frame for PRs of that size but I agree that it's excessive for small ones. The time frame should be at minimum one week because it's more likely to work with people's schedules if it includes all days of the week.

Since most of us agree on setting time limits for PR reviews, shall we just start doing that? For my part, I'll put time limits of 1-2 weeks on my PRs from now on. Also I'll start trying to create more smaller PRs. For example, my work on the right click menu would right now come in as a small-ish PR of about 200 lines mostly in one file. Some next steps I have in mind are fortify-all and wake-all options and a refactoring/consolidation of engine messages for simple unit commands, but I'll leave those for later so as not to pile too many things onto the PR.

But for the heck of it, does #111 https://github.com/C7-Game/Prototype/commit/6a4d60e0787be677db58b5912fdb576da1bc7587 have any positive or negative effect on the situation?
I reverted to before that commit, restarted my machine, launched C7, and it all worked normally, no bug. But then I returned to the latest Development version, restarted and launched again, and again no bug. So it's one of "those" bugs. The last time I saw the bug, I noticed that it also generated some error messages in the debugger tab. I didn't save them but I will the next time it happens. I have a theory that the bug is not directly related to rebooting the machine but rather to compiling the project on Windows after the previous compile was on Linux. If that's true, it's highly unlikely to affect our users and so is not a priority.

I doubt I'm running C7 as 32-bit but I don't know how to check. In general I don't install 32-bit anything unless I have no choice. I also don't think it's possible to run the game 32-bit, I vaguely recall reading that Godot with C# only works in 64-bit.
 
I reverted to before that commit, restarted my machine, launched C7, and it all worked normally, no bug. But then I returned to the latest Development version, restarted and launched again, and again no bug. So it's one of "those" bugs.

Ok, new hypothesis, and this is the only one that could make any sense (but only a tiny bit) to me: is it possible you're setting or unsetting CIV3_HOME anywhere on the Windows box? The game will let the env var setting override the registry (or more pedantically it doesn't bother to check the registry if the var is set); I figured that would be desirable for folks like Civinator who have multiple installs on one machine.

This theory would mean that CIV3_HOME would be set to the wrong location on first boot...and then somehow ??? either points to the correct folder or the env var is gone so it reads the registry on restart of C7.
 
That list sounds accurate to me, Flintlock.

I haven't noticed any oddities with the registry key on my boxes lately, just that one thing where on one computer the registry path ended in a slash, and on the other it didn't have a slash, back in January.

I believe it should be possible to run C7 in 32-bit mode, although Godot notes, "The 32-bit Mono binaries do not run on 64-bit Windows systems at the time being. Make sure to export 64-bit Mono binaries for your 64-bit target platforms." I tried it on my only 32-bit Windows system, but it runs 32-bit XP, which is too old to run Godot, it uses some audio DLLs that only ship with Vista and later. But if someone has 32-bit Win7/8/10, that could be confirmation-of-compatibility test. Wonder if I still have an old hard drive with 32-bit Vista installed that I could swap into my laptop to test? Kinda suspect Godot required 7 as a minimum though...

The Civ3_Home hypothesis is interesting though. I could use that at some point as I also have a few installs...
 
Let's start putting words together for a dev diary/release notes even if it's not quite there yet.

All right, I put together some words for a potential dev diary. There are a few placeholder (including for images), but looking at the Babylon project board, I think I remembered all the main points. Feel free to make improvements to it, the main goal here is to have a first draft.

I'll also note that this is intended for the general audience; I tend to consider dev diaries as aimed at a wide, but often non-technical audience, with release notes being more detailed (less high level), and aimed at a more technical audience. I think we already followed that model for Aztec, with the difference between WildWeazel's dev diary and Puppeteer's release notes at https://github.com/C7-Game/Prototype/releases/tag/v0.0-aztec

--------------

Good [time of day] farmers and lawmakers! Today we are pleased to announce our new Babylon release, the first since our "Aztec" release in November.

Much progress has been made since then. The first you'll notice is on the main menu, where we now have custom artwork, and where background music will play.

[screenshot here]

In game, you'll notice significant improvements to the map. Forests, jungles, marshes, hills, mountains, volcanoes, and rivers all appear in-game. Resources also appear, although for now they are display-only, with no impact in-game. With your Chariot unit, you'll see that movement costs are factored in to terrain, and a land/water distinction is also present.

Cities now produce units, on a set schedule, including new settlers, and, if they are coastal, galleys. This allows you to colonize your landmass (water transport is not yet implemented), and generally lead Babylon to greatness.

There are also now AI opponents [insert number, likely 3] per map, to contend with. They will also build units, and colonize land with settlers. Their AI logic remains primitive for now, but they will colonize based on tile yield, albeit preferring an Infinite City Sprawl (ICS) strategy. Don't be surprised if the AI tries to reach your preferred colonization site before you do!

[insert pictues of cities from multiple civilizations close to each other]

You'll also run into barbarians, who send out Warriors and Galleys to make your life difficult.

Make your life difficult, you ask? Indeed, because we now have our first iteration of combat, as well as unit animation. [Flintlock should probably take the lead on this section]

[insert picture of combat]

Behind the scenes, a lot of other, less visible improvements have also been made. Many BIQ files can be loaded (although most BIQ features are not yet supported); non-square maps are supported; and improvements have been made for setting a default Civ3 directory for importing artwork and opening scenarios. We've also been making some improvements to our C7 architecture as we switch from a prototype-proof-of-concept phase to a longer-term outlook.

You can download the Babylon release [insert release here], and let us know what you think, either in this thread or in a thread in our sub-forum [link]!
 
to find out what systems people expect to play on. Specifically if we need to support legacy OS where .NET 6 doesn't work.

That will be interesting and, I suspect, split. Clearly (to me) there is a strong camp that wants a drop-in Civ3 clone with limits and bugs removed, and another camp wants a new Civ game evolved from Civ 3 in ways that Civs IV-V1 haven't.

I think we're already largely on a 64-bit-only path by using Godot Mono, but maybe there is a 32-bit path there; I don't know. It was never an interest of mine personally to maintain legacy support.
 
Ok, new hypothesis, and this is the only one that could make any sense (but only a tiny bit) to me: is it possible you're setting or unsetting CIV3_HOME anywhere on the Windows box?
I can't imagine how CIV3_HOME would be the problem since I've never even touched it on Windows. On Linux I have a little script that sets it before launching Godot. I do have two Civ 3 installs, from GOG and Steam. I think my registry entry points to the Steam install since that's the one I installed more recently. Come to think of it, I saw a weird bug a month or so ago where the regular Firaxis editor would fail to launch, complaining that it couldn't find a Civ 3 install. I worked around that by running the editor as administrator for a week or two until the problem mysteriously disappeared on its own. Maybe its just my system that's screwed up.
 
Before I forget, I also want to have a poll ready to go with the announcement, to find out what systems people expect to play on. Specifically if we need to support legacy OS where .NET 6 doesn't work.

Probably a good idea. The list of which systems those are is at https://github.com/dotnet/core/blob/main/release-notes/6.0/supported-os.md

We've got until Godot 4.1 for that to be an option, right? I'm somewhat interested in legacy support since as of what I'm running most often today (8.1 x64), I'm supported for running .NET 6, but not for developing using Visual Studio 2022 (which still works in practice today, if you aren't doing SQL work; future updates might break it though). But if we can't migrate until Godot 4.1 anyway, that may not be an issue for me anymore at that point.

-----------

On the 32-bit subject, I found this topic which suggests that the warning on the Download page about 32-bit Mono Godot not working on 64-bit Windows has been obsolete since Godot 3.2.2. So I tried exporting C7 as 32-bit, and it ran just fine, confirmed via Task Manager it was 32-bit. Now I've downloaded the latest Godot update (3.4.3) in 32-bit mode instead of 64-bit mode, and that works just fine, too. I'll probably stick with 32-bit for this Godot version just to see if anything's out of the ordinary, it's not like we are anywhere close to needing 64-bit amounts of memory anyway.

So, contrary to what I thought a couple days ago, it looks like it might be relatively easy to support 32-bit Windows (for the time being). We don't need a 32-bit system to build it. .NET 6 also supports 32-bit Windows (although not Linux), so while I don't know if Godot 4.1 will support 32-bit systems, it probably could.
 
I can't imagine how CIV3_HOME would be the problem since I've never even touched it on Windows. On Linux I have a little script that sets it before launching Godot.
It does sound like you might have a registry issue, but on the Linux side I finally discovered that you have to export CIV3_HOME from .profile, not .bashrc, for the desktop environment to pick it up. Now I can easily add the latest Godot editor to Steam (since it doesn't come an application shortcut) and run the game from there.

We've got until Godot 4.1 for that to be an option, right?
Last I saw, yes. I can't tell from that table whether Win7 SP1 also requires ESU for .NET 6 to work, or if they're just reminding us that 7 is in EOL.

So, contrary to what I thought a couple days ago, it looks like it might be relatively easy to support 32-bit Windows (for the time being). We don't need a 32-bit system to build it. .NET 6 also supports 32-bit Windows (although not Linux), so while I don't know if Godot 4.1 will support 32-bit systems, it probably could.
That's great. How about arm? :hmm:

Here's how I'm thinking of breaking down the poll, with multiple choice for which hardware they would choose to use, if it worked (as opposed to where they currently run Civ3):

Modern gaming PC (Win 10/11)
Older or low-end Windows (8+)
Legacy Windows (XP/Vista/7)
Modern (year/version?) Mac or Linux
Any other OS
Any 32-bit system (old PCs)
Any arm system (Chromebooks, Apple M1, etc)
4:3 non-widescreen display (1024x768, etc)
FHD 1080p or lower
Higher than 1080p
 
That's great. How about arm? :hmm:

Here's how I'm thinking of breaking down the poll, with multiple choice for which hardware they would choose to use, if it worked (as opposed to where they currently run Civ3):

Modern gaming PC (Win 10/11)
Older or low-end Windows (8+)
Legacy Windows (XP/Vista/7)
Modern (year/version?) Mac or Linux
Any other OS
Any 32-bit system (old PCs)
Any arm system (Chromebooks, Apple M1, etc)
4:3 non-widescreen display (1024x768, etc)
FHD 1080p or lower
Higher than 1080p

No idea about ARM, beyond that the download page doesn't mention anything about it for Windows or Linux, which probably bodes poorly. But unlike with 32-bit x86, I don't have any ARM devices to test with.

(It does mention Apple Silicon support, which I don't really count as the same as ARM anymore, even if its lineage is ARM-based (?))

I might split things slightly differently, based on what I know so far.

- Probably split 7 out from XP/Vista. Godot 3 doesn't run on XP today, I tried. I'm pretty sure it does run on 7, but .NET 6 (and Godot 4.1) appear somewhat unlikely to do so (without enterprise patches which we can't expect to be present for 99.9% of end users). 8.1 looks likely to support Godot 4.1 based on what we know now. So 7 is in a unique situation of good for Godot 3.x, not good for 4.1. Vista might be grouped with 7, but it might also be like XP and not support Godot 3... but I would be quite surprised if anyone would choose to run C7 on Vista in 2022, so it probably doesn't matter what we group it with.
- Probably worth splitting out Linux and Mac, at least. We could further split them later if need be (e.g. we find out Godot 4.1 needs a very recent version of one of them), but for now we don't have enough info to distinguish beyond "modern".
- I'm split ARM and Apple M1. Which probably means having "Linux", "Mac Intel", "Mac M1", and "ARM Linux". Technically that leaves out "ARM Windows", but my expectations for that userbase existing are only slightly higher than for Vista.
- Chromebooks are a weird one... I hear they can store stuff locally now but can they run Linux software? If not, and unless there's a reason to believe Godot could run on them, I'd probably lump them into "Any other OS" since the prospects for supporting them wouldn't be much better than Plan 9 or WebOS or Tizen or any other option without Godot support.
- My guess is that what you really mean by "4:3 non-widescreen display" is "at, or maybe below, some lower boundary that would make things more difficult". That might exist; several years ago I got a request from someone who wanted to use my editor on something like an Asus EEE PC, which has 1024x600 resolution IIRC; at the time the editor didn't work well with less than 768 vertical pixels. We haven't really established what our lower bound is (although, implicitly, 1024x768 has been our default for legacy reasons). But I suspect we may run into the problem being "less than 1024" or "less than 768", not "non-widescreen" per-se. The EEE user was technically widescreen... just a really small widescreen.

I'm also split on whether this is too much to stuff into one poll. Maybe splitting it out into operating system and resolution would help? Do we need resolution yet? I can see knowing how many people have > 1080p could be helpful in determining where to put high-res graphics. But would we be doing that for Carthage anyway?
 
I'm writing this from armv7 Linux and also have an x86-64 Chromebook, so I can test those if we can figure out how to build, but no need to get into that yet.

Modern Chromebooks are basically Linux laptops, often with Intel processors and all the other standard hardware. They can install .deb (Debian Linux) packages, but I haven't tried it.

My thought with resolutions was just that everything is already at 1024x768. I don't think it would be reasonable or worth it to support less than Civ3's native resolution, but we can certainly scale up.

Maybe we're offering too much here. I don't want to imply that we're going to (able to) support whichever of these that they check. Maybe we should stick to x86/x86-64 Windows 7, 8+, Mac, Linux; and ask for details on other requests.
 
I'm reasonably confident that the Babylon Aztec release is already a universal Mac app with both native Intel and M1 code bundled together. If not, I am sure Godot Mono can do it with the latest versions. I recall reading and typing about it, but I'm too lazy to go refresh myself before finishing this comment.

The biggest demand non-Mac ARM targets I think would be Raspberry Pi. I think rPi 4 is ARM v8 and earlier are ARM v7. But it's also the graphics chips.

Last I looked, there were no official Godot builds for Raspberry Pi, but there is an unofficial build for rPi, but it needs the GLES set to 2 instead of 3 (probably no big deal), and they don't have Mono working with it (dealbreaker). I'm also unsure if it works on < rPi4 or if it requires 64-bit OS.

And by the way, ARM is not like x86-64/amd64. ARM is kind of a "build your own microprocessor or microcontroller kit" for big companies. There are at least two instruction sets to choose from, and you can make it big endian or little endian, and there are all sorts of other bits you can add or remove. So "ARM" is not a single target in the way that "Intel" is. Also the ARM graphics interfaces are not as robust as the PC ecosystem, so even if a chip theoretically has the capabilities, the driver libraries may be underdeveloped and/or proprietary-only.

In short, generic ARM is a nebulous target at best. We're probably down to targeting device families unless we get someone great at reverse engineering graphics chips and coding OpenGL drivers. On the other hand, I wouldn't be surprised if some sort of common set of standards emerges for a PC-like ARM platform, but not next year or real soon.

Edit: Yep: https://github.com/C7-Game/Prototype/releases/tag/v0.0-aztec (not that I've heard from anyone with an M1 to verify it works and is somehow verifying running natively and not via Rosetta)

Mac Installation
This is a universal 64-bit executable, so it should run on both Intel and M1 Macs,
 
Last edited:
Hmmm... yes, with that additional information I'm thinking that unless we have demonstrated demand/an enthusiastic volunteer, it's probably best to stick with the "easy" options, and focus the poll on those OS's, and distinctions that might be relevant for Godot 4. Our goal isn't to port Godot and its dependencies to a bunch more platforms (though I'm sure that is someone's goal).

"universal Mac app" - I still think of that as meaning PowerPC + Intel. I wonder if anyone has figured out a way to make PowerPC + Intel + M1 Mac apps. C7 probably shouldn't be the first :).

----

Babylon now shows as 100% finished on the project page; the only remaining PR that might be related is the Noto Sans one, and I don't believe that's required (though it has been approved). So, I think we're basically ready to go whenever for a Babylon release. @WildWeazel let me know if we're overlooking anything else. I have a prospective image for the combat part of the prototype release announcement, but not the others. I know you also wanted to include the poll.
 
I pulled the font fix and am taking it for a spin. Functionally I think we're there. Unfortunately I'm getting silent crashes when loading any save, and a NRE for any BIQ with no map. Regardless of the actual cause, it would be good to have a catch-all error dialog to abort loading and return to the menu, since crashing on load is one of those things everyone wants fixed.

All right, I put together some words for a potential dev diary. There are a few placeholder (including for images), but looking at the Babylon project board, I think I remembered all the main points. Feel free to make improvements to it, the main goal here is to have a first draft.
Did anybody else want to contribute anything? It's fine if not, but don't be shy! I'll put up the hardware poll as a separate thread, and we can link to it from the announcement.
 
The funny thing is we did have a catch-all error handler for failures to load... not sure why it's crashing before it gets there now. Looks like it could be a regression due to world map wrapping? But that's just based on the line number, without debugging it.

Regressions in load are becoming a more and more noticeable pain point, and it's tedious to remember to check every possible BIQ/SAV/JSON configuration, so I've created issues #154 and #155 on GitHub to add some regression tests for these. That's also something I've gradually improved over the years on my editor.

Speaking of which... any objections to the Visual Studio PR (https://github.com/C7-Game/Prototype/pull/125)? That would enable Visual Studio debugging, and while I could just keep rebasing it locally, I'd rather merge it if there isn't a reason not to.
 
Top Bottom