Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions .github/workflows/build-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,15 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4

- name: Read version from file
id: get_version
run: echo "VERSION=$(cat version)" >> $GITHUB_ENV
shell: bash
- name: Read version from file
id: get_version
run: |
V=$(sed 's/[[:space:]]//g' version)
if [ -z "$V" ]; then
echo "Error: Version file is empty or invalid"
exit 1
fi
echo "VERSION=$V" >> $GITHUB_ENV

- name: Set up Python
uses: actions/setup-python@v5
Expand Down Expand Up @@ -95,6 +100,12 @@ jobs:
COMPARE_URL="https://github.com/${{ github.repository }}/compare/${PREVIOUS_TAG}...${{ env.VERSION }}"
BODY="See the changes made since the last release: [${PREVIOUS_TAG}...${{ env.VERSION }}](${COMPARE_URL})"
fi

if [ -f vernotes ] && [ -s vernotes ] && grep -q '[^[:space:]]' vernotes; then
ADDITIONAL=$(cat vernotes)
BODY="$BODY"$'\n\n'"$ADDITIONAL"
fi

echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
echo "$BODY" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
Expand Down
67 changes: 50 additions & 17 deletions modpack_debugger.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,26 @@ def __init__(self):
super().__init__()

self.title("Modpack Debugger Kit")
self.geometry("1200x824")
self.minsize(1000, 700)

# --- Screen-Based UI Scaling Logic ---
screen_w = self.winfo_screenwidth()
screen_h = self.winfo_screenheight()

base_w, base_h = 1200, 824

if base_w > screen_w * 0.9 or base_h > screen_h * 0.9:
scaling_factor = min((screen_w * 0.9) / base_w, (screen_h * 0.9) / base_h)

ctk.set_window_scaling(scaling_factor)
ctk.set_widget_scaling(scaling_factor)

self.geometry(f"{int(base_w * scaling_factor)}x{int(base_h * scaling_factor)}")
self.minsize(int(1000 * scaling_factor), int(700 * scaling_factor))
else:
self.geometry(f"{base_w}x{base_h}")
self.minsize(1000, 700)
# -------------------------------------

self.temp_dir = Path(__file__).parent / "temp_mods"
self.project_data = self.get_default_project_data()
self.active_scan = False
Expand All @@ -79,6 +96,7 @@ def get_default_project_data(self):
"latest_snapshot": None,
"dependencies": {},
"saved_new_mods": [],
"dismissed_hanging_libs": [],
"theme": "dark"
}

Expand Down Expand Up @@ -835,6 +853,7 @@ def update_hanging_libraries(self):

mods_dir = Path(self.project_data["mods_dir"])
current_mods = set(f.name for f in mods_dir.iterdir() if f.is_file() and f.suffix == ".jar")
dismissed = set(self.project_data.get("dismissed_hanging_libs", []))

all_needed_deps = set()

Expand All @@ -848,7 +867,7 @@ def update_hanging_libraries(self):
for mod, deps in self.project_data["dependencies"].items():
if mod not in current_mods:
for dep in deps:
if dep not in all_needed_deps and dep in current_mods:
if dep not in all_needed_deps and dep in current_mods and dep not in dismissed:
hanging.append(dep)

self.hanging_libraries = list(set(hanging))
Expand All @@ -868,7 +887,7 @@ def show_hanging_libraries(self):

dialog = ctk.CTkToplevel(self)
dialog.title("Hanging Libraries Manager")
dialog.geometry("600x500")
dialog.geometry("700x500")
dialog.grab_set()

ctk.CTkLabel(dialog, text="⚠️ Hanging Library Mods",
Expand All @@ -888,39 +907,53 @@ def show_hanging_libraries(self):

def delete_selected():
to_delete = [lib for lib, var in lib_vars.items() if var.get()]

if not to_delete:
messagebox.showinfo("Info", "No libraries selected for deletion")
messagebox.showinfo("Info", "No libraries selected")
return

response = messagebox.askyesno(
"Confirm Deletion",
f"Delete {len(to_delete)} hanging library mod(s)?\nThis will permanently remove them from your mods folder."
)

if response:
if messagebox.askyesno("Confirm Deletion", f"Delete {len(to_delete)} mod(s) permanently?"):
mods_dir = Path(self.project_data["mods_dir"])
for lib in to_delete:
lib_path = mods_dir / lib
if lib_path.exists():
lib_path.unlink()
self.log(f"Deleted hanging library: {lib}", "WARNING")

self.update_hanging_libraries()
self.mark_modified()
dialog.destroy()

if self.hanging_libraries:
self.show_hanging_libraries()

def dismiss_selected():
to_dismiss = [lib for lib, var in lib_vars.items() if var.get()]
if not to_dismiss:
messagebox.showinfo("Info", "No libraries selected")
return

if messagebox.askyesno("Confirm Dismiss", "Ignore these warnings? The files will stay, but you won't be warned again for these files."):
if "dismissed_hanging_libs" not in self.project_data:
self.project_data["dismissed_hanging_libs"] = []
self.project_data["dismissed_hanging_libs"].extend(to_dismiss)
self.update_hanging_libraries()
self.mark_modified()
dialog.destroy()
if self.hanging_libraries: self.show_hanging_libraries()

btn_frame = ctk.CTkFrame(dialog, fg_color="transparent")
btn_frame.pack(pady=15)

ctk.CTkButton(btn_frame, text="🗑️ Delete Selected",
command=delete_selected, width=150,
fg_color="darkred").pack(side="left", padx=10)
command=delete_selected, width=140,
fg_color="darkred").pack(side="left", padx=5)

ctk.CTkButton(btn_frame, text="🙈 Dismiss Selected",
command=dismiss_selected, width=140,
fg_color="#555555").pack(side="left", padx=5)

ctk.CTkButton(btn_frame, text="Cancel",
command=dialog.destroy, width=150).pack(side="left", padx=10)
command=dialog.destroy, width=140).pack(side="left", padx=5)

def show_new_mods_options_dialog(self, new_mods):
"""Show dialog with options for handling detected new mods"""
Expand Down
3 changes: 3 additions & 0 deletions vernotes
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
- Added Button to Ignore Specific Hanging Library Warnings
- Shortened the text that confirms if you want to delete hanging libraries
- Implemented UI Scaling Based on Screen Size, To Prevent Overly Large GUIs on Smaller Monitors/Screens
2 changes: 1 addition & 1 deletion version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.1.2
2.0.0