Skip to content

Commit 8559f00

Browse files
author
CIS Guru
committed
feat: v1.0.0 branding, install script, and release preparation
- Update splash screen to Nine branding (600x450 PNG + SVG) - Add Nine logo SVG files (standard and inverted) - Fix NavMenu logo path and centering - Update documentation versions to v1.0.0 - Rebuild ICO and all favicon/PWA icon assets with Nine branding - Update appdata.xml homepage URL to nineapp.co - Rewrite install script: full AppImage extraction, ~/Applications/Nine/ subdirectory, Aquiis migration cleanup, force icon cache refresh - Update nine.desktop with correct metadata - Replace Aquiis screenshots with Nine-branded screenshots - Update Documentation screenshots README
1 parent 845f189 commit 8559f00

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+205
-142
lines changed

0-Nine.Core/Constants/ApplicationSettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ public class ApplicationSettings
55
public string AppName { get; set; } = string.Empty;
66
public string ProductName { get; set; } = string.Empty;
77
public string Version { get; set; } = string.Empty;
8+
public string Company { get; set; } = string.Empty;
9+
public string Copyright { get; set; } = string.Empty;
10+
public string Description { get; set; } = string.Empty;
11+
public string Website { get; set; } = string.Empty;
812
public string Author { get; set; } = string.Empty;
913
public string Email { get; set; } = string.Empty;
1014
public string Repository { get; set; } = string.Empty;

3-Nine.Shared.UI/Features/PropertyManagement/Payments/CreateForm.razor

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@
6363
<label for="paymentMethod" class="form-label">Payment Method *</label>
6464
<InputSelect id="paymentMethod" class="form-select" @bind-Value="paymentModel.PaymentMethod">
6565
<option value="">-- Select Payment Method --</option>
66-
<option value="Cash">Cash</option>
67-
<option value="Check">Check</option>
68-
<option value="Credit Card">Credit Card</option>
66+
<option value="Online Payment">Online Payment</option>
6967
<option value="Debit Card">Debit Card</option>
68+
<option value="Credit Card">Credit Card</option>
69+
<option value="Check">Check</option>
70+
<option value="Cash">Cash</option>
7071
<option value="Bank Transfer">Bank Transfer</option>
71-
<option value="Online Payment">Online Payment</option>
7272
<option value="Other">Other</option>
7373
</InputSelect>
7474
<ValidationMessage For="() => paymentModel.PaymentMethod" />
@@ -269,7 +269,7 @@
269269
public decimal Amount { get; set; }
270270

271271
[Required(ErrorMessage = "Payment method is required.")]
272-
public string PaymentMethod { get; set; } = string.Empty;
272+
public string PaymentMethod { get; set; } = "Online Payment";
273273

274274
[MaxLength(1000)]
275275
public string? Notes { get; set; } = string.Empty;

4-Nine/Assets/com.nineapp.nine.appdata.xml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,27 @@
3838
</screenshot>
3939
<screenshot>
4040
<caption>Property management interface</caption>
41-
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/property-management.png</image>
41+
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/properties.png</image>
4242
</screenshot>
4343
<screenshot>
4444
<caption>Lease workflow and tenant management</caption>
45-
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/lease-workflow.png</image>
45+
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/lease.png</image>
4646
</screenshot>
4747
<screenshot>
4848
<caption>Invoice and payment tracking</caption>
49-
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/invoice-tracking.png</image>
49+
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/invoice.png</image>
50+
</screenshot>
51+
<screenshot>
52+
<caption>Calendar list</caption>
53+
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/calendar.png</image>
54+
</screenshot>
55+
<screenshot>
56+
<caption>Routine Inspections</caption>
57+
<image>https://raw.githubusercontent.com/xnodeoncode/nine/main/Documentation/Screenshots/inspection.png</image>
5058
</screenshot>
5159
</screenshots>
5260

53-
<url type="homepage">https://github.com/xnodeoncode/nine</url>
61+
<url type="homepage">https://www.nineapp.co</url>
5462
<url type="bugtracker">https://github.com/xnodeoncode/nine/issues</url>
5563
<url type="help">https://github.com/xnodeoncode/nine/blob/main/README.md</url>
5664

4-Nine/Assets/icon.ico

-68.2 KB
Binary file not shown.

4-Nine/Assets/icon.png

25.9 KB
Loading

4-Nine/Assets/install-desktop-integration.sh

Lines changed: 61 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,19 @@ echo "AppImage: $APPIMAGE_NAME"
5252
echo "Location: $APPIMAGE_DIR"
5353
echo ""
5454

55-
# Create Applications directory
56-
mkdir -p ~/Applications
57-
58-
# Move AppImage to ~/Applications/ if not already there
59-
if [[ "$APPIMAGE_DIR" != "$HOME/Applications" ]]; then
60-
echo "Moving AppImage to ~/Applications/..."
61-
mv "$APPIMAGE_PATH" ~/Applications/
62-
APPIMAGE_PATH="$HOME/Applications/$APPIMAGE_NAME"
63-
APPIMAGE_DIR="$HOME/Applications"
55+
# Create application directory (app-specific subfolder avoids collisions)
56+
APP_INSTALL_DIR="$HOME/Applications/Nine"
57+
mkdir -p "$APP_INSTALL_DIR"
58+
59+
# Move AppImage to ~/Applications/Nine/ if not already there
60+
if [[ "$APPIMAGE_DIR" != "$APP_INSTALL_DIR" ]]; then
61+
echo "Moving AppImage to $APP_INSTALL_DIR/..."
62+
mv "$APPIMAGE_PATH" "$APP_INSTALL_DIR/"
63+
APPIMAGE_PATH="$APP_INSTALL_DIR/$APPIMAGE_NAME"
64+
APPIMAGE_DIR="$APP_INSTALL_DIR"
6465
echo -e "${GREEN}✓ Moved to: $APPIMAGE_PATH${NC}"
6566
else
66-
echo "✓ AppImage already in ~/Applications/"
67+
echo "✓ AppImage already in $APP_INSTALL_DIR/"
6768
fi
6869

6970
# Make AppImage executable
@@ -76,30 +77,51 @@ echo ""
7677
mkdir -p ~/.local/share/applications
7778
mkdir -p ~/.local/share/icons/hicolor/512x512/apps
7879

79-
# Check if icon exists in same directory
80-
ICON_PATH="${APPIMAGE_DIR}/aquiis-icon.png"
81-
if [ ! -f "$ICON_PATH" ]; then
82-
# Try to find icon.png in same directory
83-
ICON_PATH="${APPIMAGE_DIR}/icon.png"
84-
85-
if [ ! -f "$ICON_PATH" ]; then
86-
echo -e "${YELLOW}Warning: Icon file not found. Using generic AppImage icon.${NC}"
87-
ICON_PATH="application-x-executable"
88-
else
89-
# Copy icon to system location
90-
cp "$ICON_PATH" ~/.local/share/icons/hicolor/512x512/apps/aquiis.png
91-
ICON_PATH="aquiis"
92-
echo "✓ Copied icon to system icons directory"
93-
fi
80+
# Remove any stale Aquiis files (Nine was previously named Aquiis)
81+
if [ -f ~/.local/share/applications/aquiis.desktop ]; then
82+
rm ~/.local/share/applications/aquiis.desktop
83+
echo "✓ Removed legacy Aquiis desktop entry"
84+
fi
85+
if [ -f ~/.local/share/icons/hicolor/512x512/apps/aquiis.png ]; then
86+
rm ~/.local/share/icons/hicolor/512x512/apps/aquiis.png
87+
echo "✓ Removed legacy Aquiis icon"
88+
fi
89+
if [ -d "$HOME/Applications/Aquiis" ]; then
90+
echo -e "${YELLOW}Note: Legacy Aquiis app found at ~/Applications/Aquiis/ — remove it manually if no longer needed.${NC}"
91+
fi
92+
93+
# Extract icon from inside the AppImage.
94+
# Note: selective extraction (passing a filename to --appimage-extract) is not
95+
# supported by all runtimes -- always do a full extract then pick the file out.
96+
ICON_PATH="application-x-executable"
97+
EXTRACT_WORKDIR="$(mktemp -d)"
98+
99+
echo "Extracting icon from AppImage..."
100+
(cd "$EXTRACT_WORKDIR" && "$APPIMAGE_PATH" --appimage-extract > /dev/null 2>&1) || true
101+
102+
if [ -f "$EXTRACT_WORKDIR/squashfs-root/usr/share/icons/hicolor/512x512/apps/nine.png" ]; then
103+
cp "$EXTRACT_WORKDIR/squashfs-root/usr/share/icons/hicolor/512x512/apps/nine.png" \
104+
~/.local/share/icons/hicolor/512x512/apps/nine.png
105+
ICON_PATH="nine"
106+
echo "✓ Extracted and installed icon from AppImage"
107+
elif [ -f "$EXTRACT_WORKDIR/squashfs-root/nine.png" ]; then
108+
cp "$EXTRACT_WORKDIR/squashfs-root/nine.png" \
109+
~/.local/share/icons/hicolor/512x512/apps/nine.png
110+
ICON_PATH="nine"
111+
echo "✓ Extracted and installed icon from AppImage"
112+
elif [ -L "$EXTRACT_WORKDIR/squashfs-root/.DirIcon" ] || [ -f "$EXTRACT_WORKDIR/squashfs-root/.DirIcon" ]; then
113+
cp -L "$EXTRACT_WORKDIR/squashfs-root/.DirIcon" \
114+
~/.local/share/icons/hicolor/512x512/apps/nine.png
115+
ICON_PATH="nine"
116+
echo "✓ Extracted and installed icon from AppImage (.DirIcon)"
94117
else
95-
# Copy icon to system location
96-
cp "$ICON_PATH" ~/.local/share/icons/hicolor/512x512/apps/aquiis.png
97-
ICON_PATH="aquiis"
98-
echo "✓ Copied icon to system icons directory"
118+
echo -e "${YELLOW}Warning: Could not extract icon from AppImage. Using generic icon.${NC}"
99119
fi
100120

121+
rm -rf "$EXTRACT_WORKDIR"
122+
101123
# Create desktop entry
102-
cat > ~/.local/share/applications/aquiis.desktop << EOF
124+
cat > ~/.local/share/applications/nine.desktop << EOF
103125
[Desktop Entry]
104126
Name=Nine Property Management
105127
Comment=Multi-tenant property management system for DIY landlords and property managers
@@ -109,14 +131,14 @@ Type=Application
109131
Categories=Office;Finance;
110132
Terminal=false
111133
StartupWMClass=Nine Property Management
112-
X-AppImage-Version=1.1.0
134+
X-AppImage-Version=1.0.0
113135
Keywords=property;management;landlord;rental;lease;tenant;invoice;
114136
EOF
115137

116138
echo "✓ Created desktop entry"
117139

118140
# Make desktop file executable
119-
chmod +x ~/.local/share/applications/aquiis.desktop
141+
chmod +x ~/.local/share/applications/nine.desktop
120142
echo "✓ Made desktop entry executable"
121143

122144
# Update desktop database
@@ -129,7 +151,10 @@ fi
129151

130152
# Update icon cache
131153
if command -v gtk-update-icon-cache &> /dev/null; then
132-
gtk-update-icon-cache ~/.local/share/icons/hicolor/ 2>/dev/null || true
154+
gtk-update-icon-cache -f -t ~/.local/share/icons/hicolor/ 2>/dev/null || true
155+
echo "✓ Updated icon cache"
156+
elif command -v xdg-icon-resource &> /dev/null; then
157+
xdg-icon-resource forceupdate 2>/dev/null || true
133158
echo "✓ Updated icon cache"
134159
fi
135160

@@ -145,10 +170,10 @@ echo "Nine Property Management should now appear in your application launcher."
145170
echo "You can search for 'Nine' or find it in Office/Finance categories."
146171
echo ""
147172
echo "To uninstall desktop integration:"
148-
echo " rm ~/.local/share/applications/aquiis.desktop"
149-
echo " rm ~/.local/share/icons/hicolor/512x512/apps/aquiis.png"
173+
echo " rm ~/.local/share/applications/nine.desktop"
174+
echo " rm ~/.local/share/icons/hicolor/512x512/apps/nine.png"
150175
echo " update-desktop-database ~/.local/share/applications/"
151176
echo ""
152177
echo "To completely remove Nine:"
153-
echo " rm $APPIMAGE_PATH"
178+
echo " rm -rf $APP_INSTALL_DIR"
154179
echo ""

4-Nine/Assets/nine.desktop

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[Desktop Entry]
22
Name=Nine
3-
Comment=Property management perfected for up to nine properties.
3+
Comment=Property management desktop application.
44
Exec=Nine-1.0.0-x86_64.AppImage
55
Icon=nine
66
Type=Application

4-Nine/Features/Administration/Settings/Pages/ApplicationSettings.razor

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,12 +328,14 @@
328328
</a>
329329
</dd>
330330

331-
<dt class="col-sm-5">Repository</dt>
331+
<dt class="col-sm-5">Website</dt>
332332
<dd class="col-sm-7">
333-
<a href="@ApplicationService.ApplicationSettings.Repository" target="_blank">
334-
<i class="bi bi-github me-1"></i>GitHub
333+
<a href="@ApplicationService.ApplicationSettings.Website" target="_blank">
334+
<i class="bi bi-globe me-1"></i>@ApplicationService.ApplicationSettings.Website
335335
</a>
336336
</dd>
337+
<dt class="col-sm-5">Description</dt>
338+
<dd class="col-sm-7">@ApplicationService.ApplicationSettings.Description</dd>
337339
</div>
338340
</div>
339341
</div>

4-Nine/Shared/Layout/NavMenu.razor

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@
77

88

99
<div class="top-row ps-3 navbar navbar-dark">
10-
<div class="container-fluid d-flex justify-content-between align-items-center">
11-
<a class="navbar-brand" href="">Nine.</a>
12-
<div class="d-flex gap-2">
10+
<div class="container-fluid d-flex align-items-center justify-content-center">
11+
<a class="navbar-brand" href=""><img src="/assets/nine-logo-inverted.svg" width="90" alt="Nine." /></a>
12+
@* <div class="d-flex gap-2">
1313
<button class="btn btn-link p-0" @onclick="ToggleTheme" title="Toggle theme">
1414
<i class="bi @GetThemeIcon()" style="font-size: 1.4rem;"></i>
1515
</button>
16-
</div>
16+
</div> *@
1717
</div>
1818
</div>
1919

4-Nine/appsettings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@
1515
"AppName": "Nine",
1616
"ProductName": "Nine",
1717
"Version": "1.0.0",
18+
"Company": "Nine App, LLC",
19+
"Copyright": "Copyright © 2024 Nine App, LLC. All rights reserved.",
20+
"Description": "Nine is a modern property management desktop application. Nine is open-source free software.",
21+
"Website": "http://nineapp.co",
1822
"Author": "CIS Guru",
1923
"Email": "cisguru@outlook.com",
2024
"Repository": "https://github.com/xnodeoncode/nine",

0 commit comments

Comments
 (0)