Skip to content

Commit f2c048b

Browse files
committed
Bump version to 0.1.1, enforce iCloud-only storage selection, add macOS version sanitization for bundler compatibility, update app icon, and remove About settings page
1 parent 4f6d8f1 commit f2c048b

File tree

10 files changed

+74
-47
lines changed

10 files changed

+74
-47
lines changed

Simjot/dependency-reduced-pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<groupId>com.simjot</groupId>
55
<artifactId>simjot</artifactId>
66
<name>Simjot</name>
7-
<version>1.0.0</version>
7+
<version>0.1.1</version>
88
<description>Simjot Journal Application</description>
99
<licenses>
1010
<license>

Simjot/packaging/build-macos-pkg.sh

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,22 @@ log_ok() { echo -e "${GREEN}[OK]${NC} $*"; }
4444
log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
4545
log_error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
4646

47+
sanitize_version_for_mac() {
48+
local version="$1"
49+
local IFS='.'
50+
read -r -a parts <<< "$version"
51+
if [[ ${#parts[@]} -eq 0 ]]; then
52+
echo "1"
53+
return
54+
fi
55+
if (( parts[0] <= 0 )); then
56+
parts[0]=1
57+
version="${parts[*]}"
58+
version="${version// /.}"
59+
fi
60+
echo "$version"
61+
}
62+
4763
check_command() {
4864
if ! command -v "$1" &>/dev/null; then
4965
log_error "Required command not found: $1"
@@ -355,6 +371,10 @@ mkdir -p "$BUILD_DIR" "$ICONSET_DIR" "$DIST_DIR"
355371

356372
# Get version from pom.xml
357373
VERSION="$(mvn -q -DforceStdout help:evaluate -Dexpression=project.version 2>/dev/null || echo "1.0.0")"
374+
APP_VERSION_SAFE="$(sanitize_version_for_mac "$VERSION")"
375+
if [[ "$APP_VERSION_SAFE" != "$VERSION" ]]; then
376+
log_warn "Sanitizing app-version for macOS bundler: $VERSION -> $APP_VERSION_SAFE"
377+
fi
358378
log_info "Building $APP_NAME version $VERSION"
359379

360380
# ============================================================================
@@ -501,7 +521,7 @@ log_info "Creating macOS application bundle..."
501521
JPKG_BASE_ARGS=(
502522
--type app-image
503523
--name "$APP_NAME"
504-
--app-version "$VERSION"
524+
--app-version "$APP_VERSION_SAFE"
505525
--vendor "$VENDOR"
506526
--input "$ROOT_DIR/target"
507527
--main-jar "$SHADED_JAR"
@@ -684,7 +704,7 @@ EOF
684704
pkgbuild \
685705
--root "$BUILD_DIR" \
686706
--identifier "$BUNDLE_ID" \
687-
--version "$VERSION" \
707+
--version "$APP_VERSION_SAFE" \
688708
--install-location "/Applications" \
689709
--component-plist "$COMPONENT_PLIST" \
690710
"$COMPONENT_PKG"
@@ -732,7 +752,7 @@ cat > "$DIST_XML" <<EOF
732752
<pkg-ref id="$BUNDLE_ID"/>
733753
</choice>
734754
735-
<pkg-ref id="$BUNDLE_ID" version="$VERSION" onConclusion="none">component.pkg</pkg-ref>
755+
<pkg-ref id="$BUNDLE_ID" version="$APP_VERSION_SAFE" onConclusion="none">component.pkg</pkg-ref>
736756
</installer-gui-script>
737757
EOF
738758

Simjot/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>com.simjot</groupId>
99
<artifactId>simjot</artifactId>
10-
<version>1.0.0</version>
10+
<version>0.1.1</version>
1111
<packaging>jar</packaging>
1212

1313
<name>Simjot</name>

Simjot/src/main/core/AppInfo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public final class AppInfo {
1616
private AppInfo() {}
1717

1818
public static final String NAME = "Simjot";
19-
public static final String VERSION = "0.1.0";
19+
public static final String VERSION = "0.1.1";
2020
public static final String AUTHOR = "Ilgaz Mehmetoglu";
2121
public static final String LICENSE = "MIT License";
2222

Simjot/src/main/infrastructure/io/AppDirectories.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,31 @@ public static File findExistingIcloudRoot() {
245245
return estimateDataScore(icloud) > 0 ? icloud : null;
246246
}
247247

248+
/**
249+
* Resolve the preferred Simjot root, restricting selection to iCloud Drive.
250+
* Attempts (in order): provided config path if it is inside iCloud, an existing
251+
* iCloud Simjot folder, or the suggested iCloud location (creating directories
252+
* if necessary).
253+
*/
254+
public static File resolveIcloudRoot(File preferredConfig) {
255+
if (preferredConfig != null && isIcloudRoot(preferredConfig)) {
256+
return preferredConfig;
257+
}
258+
File existing = findExistingIcloudRoot();
259+
if (existing != null) {
260+
return existing;
261+
}
262+
File suggested = suggestedIcloudRoot();
263+
if (suggested == null) {
264+
return null;
265+
}
266+
if (!suggested.exists()) {
267+
// best effort to create the folder structure so we can initialize later
268+
suggested.mkdirs();
269+
}
270+
return suggested.exists() && suggested.isDirectory() ? suggested : null;
271+
}
272+
248273
/**
249274
* Default Simjot root in the user's home folder.
250275
*/
251 Bytes
Binary file not shown.

Simjot/src/main/ui/app/AppConfig.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,22 +97,20 @@ public static File loadRootFolder() {
9797
}
9898
}
9999

100-
File icloud = AppDirectories.findExistingIcloudRoot();
101-
File local = AppDirectories.defaultLocalRoot();
102-
File docs = AppDirectories.defaultDocumentsRoot();
100+
File icloud = AppDirectories.resolveIcloudRoot(configRoot);
103101

104-
File best = AppDirectories.chooseBestRoot(configRoot, icloud, local, docs);
105-
if (best != null) {
102+
if (icloud != null) {
106103
int configScore = AppDirectories.estimateDataScore(configRoot);
107-
int bestScore = AppDirectories.estimateDataScore(best);
108-
if (configRoot != null && !configRoot.equals(best)) {
109-
IoLog.warn("root-select", "Config root seems empty; switching to " + best.getAbsolutePath() +
110-
" (score=" + bestScore + ", configScore=" + configScore + ")", null);
111-
saveRootFolder(best);
104+
int icloudScore = AppDirectories.estimateDataScore(icloud);
105+
if (configRoot != null && !configRoot.equals(icloud)) {
106+
IoLog.warn("root-select", "Config root not in iCloud or empty; switching to " + icloud.getAbsolutePath() +
107+
" (icloudScore=" + icloudScore + ", configScore=" + configScore + ")", null);
108+
saveRootFolder(icloud);
112109
} else {
113-
IoLog.info("root-select", "Using root: " + best.getAbsolutePath() + " (score=" + bestScore + ")");
110+
IoLog.info("root-select", "Using iCloud root: " + icloud.getAbsolutePath() +
111+
" (score=" + icloudScore + ")");
114112
}
115-
rootFolder = best;
113+
rootFolder = icloud;
116114
AppDirectories.setRoot(rootFolder);
117115
preflightIcloudRoot(rootFolder);
118116
return rootFolder;

Simjot/src/main/ui/app/JournalApp.java

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
*
119119
* @author S1mplector
120120
* @see ui, infrastructure and core submodules
121-
* @version 0.1.0
121+
* @version 0.1.1
122122
*/
123123
public class JournalApp extends JFrame {
124124
/**
@@ -466,7 +466,6 @@ public void disableSimFeatures() {
466466
*/
467467
private void loadOrChooseRootFolder() {
468468
configFile = new File(System.getProperty("user.home"), CONFIG_FILENAME);
469-
File icloudExisting = AppDirectories.findExistingIcloudRoot();
470469
File configRoot = null;
471470

472471
String nativePath = main.infrastructure.ffi.NativeAccess.readConfig(configFile.getAbsolutePath());
@@ -491,31 +490,18 @@ private void loadOrChooseRootFolder() {
491490
}
492491
}
493492

494-
File local = AppDirectories.defaultLocalRoot();
495-
File docs = AppDirectories.defaultDocumentsRoot();
496-
File best = AppDirectories.chooseBestRoot(configRoot, icloudExisting, local, docs);
497-
if (best != null) {
493+
File icloudOnly = AppDirectories.resolveIcloudRoot(configRoot);
494+
if (icloudOnly != null) {
498495
int configScore = AppDirectories.estimateDataScore(configRoot);
499-
int icloudScore = AppDirectories.estimateDataScore(icloudExisting);
500-
int localScore = AppDirectories.estimateDataScore(local);
501-
int docsScore = AppDirectories.estimateDataScore(docs);
502-
int bestScore = AppDirectories.estimateDataScore(best);
496+
int icloudScore = AppDirectories.estimateDataScore(icloudOnly);
503497
main.infrastructure.io.IoLog.info("root-select", "config=" + pathOrNull(configRoot) +
504-
" score=" + configScore + ", icloud=" + pathOrNull(icloudExisting) +
505-
" score=" + icloudScore + ", local=" + pathOrNull(local) +
506-
" score=" + localScore + ", docs=" + pathOrNull(docs) +
507-
" score=" + docsScore + ", selected=" + best.getAbsolutePath() +
508-
" score=" + bestScore);
509-
if (configRoot != null && !configRoot.equals(best)) {
510-
main.infrastructure.io.IoLog.warn("root-select", "Config root seems empty; switching to " +
511-
best.getAbsolutePath(), null);
512-
configureRootFolder(best, true);
513-
} else {
514-
configureRootFolder(best, configRoot == null);
515-
}
516-
if (configRoot != null && configRoot.equals(best)) {
517-
maybePromptIcloudSwitch(icloudExisting);
498+
" score=" + configScore + ", icloud=" + pathOrNull(icloudOnly) +
499+
" score=" + icloudScore + ", selected=iCloud");
500+
if (configRoot != null && !AppDirectories.isIcloudRoot(configRoot)) {
501+
main.infrastructure.io.IoLog.warn("root-select", "Config root not in iCloud; switching to " +
502+
icloudOnly.getAbsolutePath(), null);
518503
}
504+
configureRootFolder(icloudOnly, !icloudOnly.equals(configRoot));
519505
return;
520506
}
521507

Simjot/src/main/ui/features/home/MainMenuPanel.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import javax.swing.SwingUtilities;
4444
import javax.swing.Timer;
4545

46+
import main.core.AppInfo;
4647
import main.core.service.LastSaveTracker;
4748
import main.core.service.NotebookStore;
4849
import main.core.service.SettingsStore;
@@ -563,7 +564,7 @@ protected void paintComponent(Graphics g) {
563564
aboutIcon.setOpaque(false);
564565
left.add(aboutIcon);
565566

566-
JLabel versionLabel = new JLabel("v.0.1.0");
567+
JLabel versionLabel = new JLabel(AppInfo.versionString());
567568
versionLabel.setForeground(AeroTheme.TEXT_PRIMARY);
568569
versionLabel.setFont(bradleyHand);
569570
left.add(versionLabel);

Simjot/src/main/ui/features/settings/SettingsPanel.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ private void buildSidebar(){
7474
sectionModel.addElement("Appearance");
7575
sectionModel.addElement("Storage");
7676
sectionModel.addElement("Security");
77-
sectionModel.addElement("About");
7877

7978
sectionList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
8079
sectionList.setSelectedIndex(0);
@@ -116,9 +115,7 @@ private void buildPages(){
116115
SecuritySettingsPage security = new SecuritySettingsPage();
117116
addPage("Security", security);
118117

119-
// About (comprehensive information page)
120-
AboutSettingsPage aboutPage = new AboutSettingsPage();
121-
addPage("About", aboutPage);
118+
// About page temporarily disabled
122119

123120
cardsPanel.setOpaque(true);
124121
cardsPanel.setBackground(Color.WHITE);

0 commit comments

Comments
 (0)