All notable changes to SparkNotePad will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
SparkNotePad v1.3.5 delivers graceful application restart and explicit exit actions, comprehensive About dialog truncation fixes for macOS Retina and Linux HiDPI, a primary-source verified 2025–2026 security audit of all vendored engines and Qt dependencies, and defense-in-depth hardening against all confirmed relevant CVEs.
cmake/PackagingMac.cmake target dmg to prune unused, bulky Qt 6 frameworks eagerly deployed by macdeployqt on desktop macOS (QtPdf, QtQml, QtQmlMeta, QtQmlModels, QtQmlWorkerScript, QtQuick, QtVirtualKeyboard, QtVirtualKeyboardQml, and plugins libqtvirtualkeyboardplugin.dylib, libqpdf.dylib).UDZO zlib compression (zlib-level=9) and automatic ad-hoc code-signing (codesign --force --deep -s -).x86_64) DMG package size from 52.46 MB down to 29.80 MB (43% reduction, strictly below the 50 MB ceiling) while maintaining 100% runtime integrity.CPACK_DEBIAN_PACKAGE_DEPENDS in cmake/PackagingLinux.cmake using Debian alternative syntax (|) supporting both classic Qt6 packages (Ubuntu 22.04 LTS, Debian 12 Bookworm) and 64-bit time_t transition packages (Ubuntu 24.04 LTS, Debian 13 Trixie, Ubuntu 26.04).sudo apt install ./sparknotepad_*.deb now automatically queries mirrors and installs all Qt6 runtime libraries and QPA plugins, providing full parity with Fedora’s automatic dnf install ./sparknotepad-*.rpm.ubuntu-22.04 (glibc 2.35) with g++-12, guaranteeing binary execution across Ubuntu 22.04+, Debian 12+, Ubuntu 24.04+, and Debian 13+.doc/BUILD_UBUNTU_DEBIAN.md and updated doc/LINUX_DEB_RPM_PACKAGING.md referencing jeremieconte/NotepadNext-native-linux/BUILD-UBUNTU-26.04.md.SparkNotePad.svg):
SparkNotePad.png (blue rounded notepad with horizontal tone bands, dark blue “N#” emblem, and angled orange/gold graphite pencil) directly into high-DPI vector SVG (icon/SparkNotePad.svg and src/icons/SparkNotePad.svg), replacing the obsolete dark-editor squircle graphic.icons/SparkNotePad.svg into Qt resources (src/resources.qrc) and updated packaging automation (scripts/package-flatpak-appimage.sh, cmake/PackagingLinux.cmake) ensuring 100% brand consistency across Linux desktop launchers, Flatpak, AppImage, and window managers.src/*.cpp and src/*/*.cpp) using clangd --check.cppcheck performance recommendations: returning const QString & from Macro::getName() and const QStringList & from RecentFilesListManager::fileList(), eliminating redundant string allocations.FieldMeta::id default member value in StatusBarCustomizerDialog.cpp to resolve uninitMemberVarNoCtor.ScintillaNext::cutAllowLine).scripts/generate_compilation_database.py with shlex.join() and standard LLVM "arguments": [...] array to eliminate white-space argument splitting on preprocessor defines.src/features/MacServicesHandler.cpp by including dialogs/MainWindow.h and SparkNotePadApplication.h to satisfy incomplete type requirements during QPointer template instantiation.src/main.cpp (SparkNotePadApplication::exec() and SparkNotePadApplication::exit(0)), resolving SonarQube rule cpp:S2695.PROPERTIES GENERATED TRUE on ${CMAKE_BINARY_DIR}/version.rc in src/CMakeLists.txt, eliminating CMake IntelliSense missing file diagnostics.clangd.fallbackFlags in .vscode/settings.json by removing a stray -isystem argument before -isysroot, restoring correct header search paths for standalone header files./usr/include from Qt6 and Cups::Cups interface include directories in CMakeLists.txt, permanently preventing C math.h macro pollution (signbit, isfinite, isnan, hypot) from interfering with C++20 standard library <format> and <cmath>.scripts/generate_compilation_database.py) indexing all .h, .hpp, .cpp, and .mm files with 0 linter errors across all pillars.QScrollArea viewports and bare QWidget child containers inside QTabWidget::pane.cardBg across all tabs (About, Maintainer, Credits, Diagnostics, Shortcuts, License), scroll areas, and viewports.rgba(15,23,42,0.70) dark / rgba(241,245,249,0.85) light) with an accent left border to notice, meta, and diagnostics cards across About and Diagnostics tabs.QTextBrowser elements across Maintainer, Credits, Shortcuts, and License tabs for seamless edge-to-edge typography.action->setIconVisibleInMenu(true)):
MenuIconEventFilter on SparkNotePadApplication and ensureMenuIconsVisible() in MainWindow ensuring that macOS Cocoa and all desktop environments render action icons in menus (overriding macOS Qt’s default behavior where menu icons are suppressed).resources.qrc to 30+ previously un-iconized menu actions across File, Edit, Search, View, Window, Run, and Help menus (e.g., Save As, Save a Copy As, Close All variants, Find in Files, Find Next/Previous, Move Selected Lines Up/Down, Duplicate Current Line, Copy Full Path/File Name/Directory, Recent Files actions, Open Folder as Workspace, Check for Updates, Show Wrap Symbol, Display Diagnostics, Accessibility & User/Developer Guides, External Tools, and Theme Switcher).i18n/SparkNotePad_id.ts and i18n/SparkNotePad_en.ts using lupdate, achieving 100% translation coverage (1,405 strings, 0 unfinished, 0 missing).UpdateDialog source strings to English in C++ code and provided refined, high-fidelity Indonesian translations (EYD V) and English equivalents for all update dialog states (Update Available, Up to Date, Update Check Failed)..qm translation catalogs via lrelease.Ctrl+Alt+R / Cmd+Option+R): Graceful restart from the File menu that verifies unsaved documents across all tabs (checkEditorsBeforeClose()), flushes QSettings (saveSettings()), stops the auto-save timer, releases the SingleApplication instance lock (releaseSingleInstanceLock()), and relaunches natively: macOS .app bundles via /usr/bin/open -n -a <bundle> (absolute path), Linux via QProcess::startDetached(QCoreApplication::applicationFilePath(), args). Supports optional --safe-mode flag.find.png, findReplace.png, zoomIn.png, zoomOut.png, indentGuide.png, undo.png, redo.png) with crisp monoline vector SVGs matching the design language of restart.svg and exit.svg (24x24 viewBox, stroke-width 2.2, round stroke linecaps and joins, fill=”none”):
src/icons/undo.svg: Iconic U-turn return arrow in Vibrant Blue (#3b82f6).src/icons/redo.svg: Iconic U-turn forward arrow in Emerald Green (#10b981).src/icons/find.svg: Precision magnifying glass in Sky Blue (#0ea5e9).src/icons/findReplace.svg: Magnifying glass with integrated directional replace flow in Vivid Violet (#8b5cf6).src/icons/zoomIn.svg: Magnifying glass with centered plus sign in Emerald Green (#10b981).src/icons/zoomOut.svg: Magnifying glass with centered minus sign in Amber Gold (#f59e0b).src/icons/indentGuide.svg: Vertical alignment guideline with hierarchical indentation levels and step arrow in Electric Cyan (#06b6d4).arrow_refresh.png with a modern crisp vector SVG circular reload icon (icons/restart.svg) in vibrant blue #2563eb.icons/exit.svg) featuring an intuitive door-exit vector in crimson #ef4444.actionPreferences) with modern vector icon (icons/settings.svg) directly on mainToolBar beside the Restart action for immediate one-click access.mainToolBar icon dimensions to 20x20 high-DPI across MainWindow.ui and MainWindow.cpp, ensuring optimal optical clarity on macOS Retina (devicePixelRatio 2x / 40x40 px) and 4K displays.Ctrl+Z / Cmd+Z) and Redo (Ctrl+Y / Cmd+Y) at the top of the menu.Ctrl+F / Cmd+F) for instant search from caret position.Ctrl+O / Cmd+O) and Save (Ctrl+S / Cmd+S) for rapid document operations.Undo (undo.svg), Redo (redo.svg), Cut (cut.png), Copy (copy.png), Paste (paste.png), Delete (bin_closed.png), Find (find.svg), Open (openFile.png), Save (saved.png), Open URL (folder_go.png), and Copy URL (copy.png).action->setIconVisibleInMenu(true) in ActionUtils::populateActionContainer and MainWindow::showEditorContextMenu() ensuring all actions and submenus display their icons across macOS Retina and Linux desktop environments.main and release branch 1.3.5 to identical commit history (main IS 1.3.5).develop and branch 1.1.0 to identical commit history (1.1.0 IS develop)..cpp, .h) to explicitly declare SparkNotepad is free software: you can redistribute it and/or modify, crediting upstream creator Justin Dailey (2018–2026), current lead maintainer Harry Dertin Sutisna Alsyundawy (2025–2026), official repository URI, and ALSYUNDAWY IT SOLUTION.tests/test_lua_security.h): Added TestLuaSecurity to the standard test suite verifying:
LuaState::setVariable() inert data contract (values pushed via lua_pushstring, never luaL_loadstring).LuaState::restrictDangerousApis() sandbox removes os.execute, os.exit, io.popen, package.loadlib.LuaState::restrictDangerousApis() Sandbox Method: Strips dangerous OS/IO Lua primitives (os.execute, os.exit, os.tmpname, io.popen, package.loadlib, package.loadclib) for untrusted macro/extension execution contexts.Edit > Blank Operations): Quick command to trim all trailing whitespace and tabs across the buffer in a single atomic undo step. Fully localized in Indonesian (Pangkas Spasi di Akhir).UpdateDialog): Replaced generic legacy QMessageBox alerts with an exquisite, theme-responsive dialog. Features high-DPI antialiased vector badges, version comparison cards with pill tags (Versi Terpasang ➜ Versi Terbaru), formatted scrollable changelog viewer, and refined primary/secondary action buttons for Update Available, Up to Date, and Network Error states.doc/NOTEPADNEXT_VS_SPARKNOTEPAD_COMPARISON.md): Comprehensive bilingual (English & Indonesian) technical treatise detailing the lineage, architectural superiority, security hardening, and extensive capability expansion of SparkNotePad over official upstream NotepadNext 0.15.build/compile_commands.json (symlinked at root), eliminating all IDE cascade header resolution errors and 756 SonarQube CFamily compilation errors.MainWindow.cpp swappable parameters with // NOLINTBEGIN(bugprone-easily-swappable-parameters) and ScintillaNext.cpp integer-to-pointer casts with // NOLINTBEGIN(performance-no-int-to-ptr).bugprone-easily-swappable-parameters and performance-no-int-to-ptr to .clangd ClangTidy Remove list.strcpy and strcat with safe snprintf in src/IFaceTable.cpp.QLocale::system() and QRandomGenerator::system() calls, achieving 0 Flawfinder hits at risk level 4.QPointer<ScintillaNext> and QPointer<ads::CDockAreaWidget>, added fallback editor resolution, and connected destruction listeners, eliminating null-pointer dereferences when closing split tabs.SC_CP_UTF8 to prevent multi-byte UTF-8 emoji splitting during caret operations, clamped character counting in the status bar on files > 2MB, and bounded highlighter and autocompletion searches to the active viewport.MacServicesHandler::activateApplication() via Cocoa [NSApp activateIgnoringOtherApps:YES] and handled commitDataRequest to ensure save prompts always surface when quitting from the Dock.#ACCEF7 (macOS accent) for light theme and #2D558C for dark theme, and prevented CallTip hover dwell from interrupting active selection drags.DebugManager::removeMessageHandler() in ~DebugLogDock() to prevent writing to deleted widgets during shutdown.Replace field) because the original code only set setMaximumHeight(0) without invoking hide().ui->labelReplaceWith->hide(); ui->comboReplace->hide(); on FIND_TAB and MARK_TAB, and ui->labelReplaceWith->show(); ui->comboReplace->show(); on REPLACE_TAB.FindReplaceDialog::setTab(int tab) to explicitly invoke changeTab(tab) so that switching to Find or Mark tab reliably resets and enforces exactly ONE single search box on screen.-I/path/to/include caused /path/to/include/QtCore/qobject.h forwarding stubs to match themselves in an infinite recursive include loop (#include nested too deeply), dropping <QObject>, <QDialog>, and <QtGlobal>. Replaced raw include directory flags with -iframework /path/to/lib and direct -isystem /path/to/lib/Qt*.framework/Headers across scripts/generate_compilation_database.py, .clangd, and .vscode/settings.json, completely resolving the 945 cascade diagnostics.--query-driver compiler flag from .clangd CompileFlags.Add (which caused compiler driver errors), keeping it properly scoped to clangd.arguments in .vscode/settings.json. Added # yaml-language-server: $schema=none header to .clangd to eliminate duplicate mapping keys warning in VS Code YAML schema validator.lizard) in .vscode/settings.json, resolving Line could not be parsed: Usage : exception.MainWindow.cpp & MainWindow.h: Resolved 233+ linter findings: eliminated implicit integer precision truncations (sptr_t, Sci_PositionCR, qsizetype -> static_cast<int>), converted non-mutating pointer variables and parameters to pointer-to-const (const ScintillaNext *, const ApplicationSettings *, const Macro *, const QAction *), replaced redundant explicit type declarations with auto, marked member functions const (applyCustomShortcuts() const, setFolderAsWorkspacePath(...) const, updateLanguageBasedUi(...) const, newWindow() const, showEditorZoomLevelIndicator() const, etc.), flattened nested loops and conditionals to lower cognitive complexity from 345, 51, and 33 down below threshold, enforced explicit lambda captures ([this, app], [this], [bookMarkDecorator]), merged nested if statements, adopted if-init statements, and utilized C++20 using enum UserSaveAction and using enum Scintilla::Update.ScintillaNext.cpp & ScintillaNext.h: Resolved 64+ linter issues: removed shadowing static constexpr enum aliases (NoChange, Modified, Deleted, Restored, New, File, FileMissing), scoped enums FileStateChange and BufferType to std::uint8_t, updated all usages to explicit scoped enums (BufferType::File, FileStateChange::Modified), utilized using enum BomType, added // NOLINT // NOSONAR annotations to document inherited Scintilla method shadows (cutAllowLine, close), replaced C-style pointer casts with reinterpret_cast<const char *>, converted member functions to const, eliminated parameter shadowing, and resolved implicit conversion loses integer precision: 'Sci_PositionCR' to 'int' in findTextRegex via explicit static_cast<int> in range callbacks.Geometry.h: Added #include <cstdint> defining intptr_t, defaulted operator== and removed redundant operator!=, converted operators (+, -, *, /) to hidden friend operators, passed const PRectangle & to Intersects, scoped enum class Edge : std::uint8_t, fixed narrowing integer/float conversions with static_cast, removed commented code, and added inline // NOLINT // NOSONAR(cpp:S1709) annotations on non-explicit constructors to preserve required implicit conversions while silencing false positives.Platform.h: Made Platform.h completely self-contained with standard and Scintilla headers (<cstddef>, <cstdint>, <memory>, <optional>, <string>, <string_view>, <vector>, "ScintillaTypes.h", "Geometry.h"), converted typedefs to using, added virtual ~IListBoxDelegate() = default; and virtual ~IScreenLine() noexcept = default;, scoped enums (Ends, GradientOptions, Cursor, EventType) to std::uint8_t, used in-class initializers for Window data members (wid and cursorLast), added // NOSONAR suppressions on FontParameters constructor parameter count and WindowID wid, and removed redundant parentheses.ScintillaEdit.h: Suppressed inherited method shadowing and authorized method count rules via // NOLINT // NOSONAR(cpp:S1448, cpp:S5495).FindReplaceDialog: Refactored TabIndex and SearchDirection enums to enum class : std::uint8_t with constexpr aliases, added finder->options().text = std::move(text);, replaced adjacent swappable QString parameters in showMessage with strongly-typed enum class MessageType : std::uint8_t { Success, Error, Info }, adopted C++20 using enum MessageType; inside showMessage() (resolving SonarQube cpp:S6021), and added class method count suppressions.Streamlined .clangd & IDE Configuration: Simplified .clangd configuration into a unified single-document specification, eliminating YAML language server duplicate array warnings (Array has duplicate items). Configured "typescript.validate.enable": false in .vscode/settings.json and added i18n/**,**/*.ts to sonar.exclusions in both .vscode/settings.json and sonar-project.properties to permanently prevent TypeScript language servers from erroneously flagging Qt XML .ts translation files.Indonesian Localization (i18n/SparkNotePad_id.ts) 100% Finished & EYD V / PASTI Compliance: Rebuilt, perfected, and verified the complete Indonesian localization (1391 translations finished, 0 unfinished). Standardized computing terminology strictly adhering to official Kemendikdasmen standards (EYD V, PASTI, KBBI VI) and Mozilla L10n: replaced machine translation blunders (bALIK kASUS → bALIK hURUF, Berhubung Tanda Hubung → Bertanda Hubung, Minimalkan → Padatkan for code minification, sintaks → sintaksis, pengkodean → pengodean, bawaannya → bawaan adalah, pembesaran → perbesaran, and &Undo → &Urungkan).AboutDialog.cpp: Added // NOSONAR(cpp:S5025) on layout allocations, decomposed nested ternaries in updateThemeColors(), dropping cognitive complexity under 25, marked copySystemInfoToClipboard() const, marked screen pointers const QScreen *, and replaced redundant types with auto.ThemeManager: Defaulted special member functions, added using enum ThemeManager::ThemeMode;, decomposed nested ternaries, merged nested if statements, reduced scope of sheet inside if (qApp), and eliminated pseudo-TODO comments.ReleaseManager: Cast integer sizes via static_cast<int>, replaced redundant type with auto, adopted if-init statements, marked const QAbstractButton *btnLater, and cleaned up macro semicolons.LuaState: Scoped loop counter i inside for statement, and renamed module to modName.TestCryptoManager & TestLuaSecurity: Marked all slot methods const, adopted std::array<std::string_view, 11>, named test namespace, and used raw string literals.generate_compilation_database.py: Decomposed monolithic script into clean helper functions (cognitive complexity < 5), and extracted repeated string literals CPM_CACHE_DIR and CLANGXX_PATH.release.yml: Refactored secrets access from dot notation to bracket notation $ to eliminate IDE context access warnings.thirdparty/scintilla: Made ScintillaEdit constructor explicit, passed rc by const reference in Geometry.h, added explicit and cppcheck suppression annotations to constructors in Geometry.h and Platform.h.&Credits && Attribution tab label to &Credits (full label preserved as QTabWidget::setTabToolTip()).setTabToolTip() for both &Credits (“Credits & Attribution”) and &Diagnostics (“System & Engine Diagnostics”).tabBar()->setElideMode(Qt::ElideNone) and setUsesScrollButtons(false) to prevent tab scroll arrows.setMinimumSize(620, 480) and resize(660, 520) to give tabs room without elision.createAboutTab() and createCreditsTab() content inside frameless QScrollArea (setWidgetResizable(true), ScrollBarAlwaysOff horizontal).setWordWrap(true) on m_titleLabel, m_badgesLabel, and m_metaLabel to prevent horizontal overflow.v1.3.0 to v1.3.5 throughout dialog content.request.setAttribute(QNetworkRequest::Http2AllowedAttribute, false) in ReleaseManager::checkForUpdates(). Eliminates exposure regardless of Qt version; safe on all Qt 6.5–6.11+ builds.SparkNotePadApplication::detectLanguageFromExtension() via setVariable("ext", extension) pattern. Security comment added to LuaState.h and LuaState.cpp documenting the invariant. Defense-in-depth restrictDangerousApis() sandbox added.restartApplication() always uses QCoreApplication::applicationFilePath() (absolute) and /usr/bin/open (absolute) for macOS bundle relaunch. No bare binary names passed to process launchers.VERSION and APP_VERSION from 1.3.0 to 1.3.5.SparkNotePad_en.ts and SparkNotePad_id.ts synchronized with new v1.3.5 UI strings.SparkNotePad v1.3.0 represents a landmark release featuring the official transformation from NoteSciPad into SparkNotePad across all application targets, repositories, packaging pipelines, and system integrations. This release delivers an updated visual identity with a custom high-definition iconset adhering to Apple HIG and Windows standards, comprehensive 13-pillar code quality refactoring (eliminating performance bottlenecks, enforcing const-correctness, and resolving lint invariants), complete elimination of dark mode leakage in light mode dialogs, compiler scope hardening across multi-branch targets, refined Indonesian localization and documentation, and dual-format cryptographic compatibility supporting both SPKENC01 and legacy NSPENC01 encrypted files.
palette(alternate-base) and palette(base) stylesheets across AboutDialog and DisplayInfoDialog. On host operating systems set to Dark Mode (such as macOS Sequoia/Sonoma or Linux dark themes), Qt previously resolved those palette macros to dark gray (#2d2d2d), resulting in unsightly dark rectangles inside light-mode dialogs.updateThemeColors): Implemented dynamic theme event listeners connected to ThemeManager::themeChanged in AboutDialog and DisplayInfoDialog. Color tokens are resolved deterministically using explicit CSS hex definitions (#fafbfc card background, #f0f2f5 window background, #e1e4e8 border, #24292f primary text, #57606a secondary text in Light Mode; #282a36, #1e1f29, #44475a, #f8f8f2 in Dark Mode).findThemePaletteById was referenced without being in scope by binding direct pointer fallbacks (&kDarkPalette / &kLightPalette).src/:
knownConditionTrueFalse: Corrected UTF-32 surrogate range calculation in RtfConverter.cpp with signed 16-bit short casting, and removed redundant ternary expressions in LuaExtension.cpp.missingOverride: Added explicit override specifier across 16 virtual methods in IFaceTable.h and IFaceTableMixer.h.noExplicitConstructor: Added explicit keyword to single-argument constructors in ApplicationSettings.h, MacroRecorder.h, Finder.h, SmartHighlighter.h, SurroundSelection.h, and URLFinder.h.shadowFunction & shadowMember: Fixed setter macro CREATE_SETTING/DEFINE_SETTING parameter shadowing in ApplicationSettings, and member shadowing in FindReplaceDialog, MainWindow, MacroRecorder, and Finder.cstyleCast: Replaced C-style pointer casts with reinterpret_cast<const char *> and const_cast in EncodingSelectionDialog.cpp and LuaExtension.cpp.constVariablePointer: Declared read-only pointers and iterators as const in IFaceTableMixer.cpp, ClipboardHistoryDialog.cpp, and LuaExtension.cpp.ignoredReturnErrorCode: Verified and handled return status of d.mkpath() in ScintillaNext.cpp.passedByValue: Passed heavy objects (MacroStep, QString names) by const & to eliminate temporary heap allocations.sonar-project.properties and .vscode/settings.json pointing to build/compile_commands.json for first-class SonarLint CFamily and clangd static analysis.SparkNotePad.icns: Generated 10 distinct standard macOS icon resolutions (16x16, 16x16@2x, 32x32, 32x32@2x, 128x128, 128x128@2x, 256x256, 256x256@2x, 512x512, 512x512@2x) packaged via native iconutil.SparkNotePad.ico (16, 24, 32, 48, 64, 128, 256 px), high-DPI 512x512 Linux desktop icon (SparkNotePad.png), and clean vector SVG (SparkNotePad.svg).src/resources.qrc and window application headers to load :/icons/SparkNotePad.png.#181a1f, #1e1e1e, #25282c) caused by downscaled 32x32 faint outlines.find.png): Designed a high-precision azure/cyan magnifying glass with 3D specular white gleam and polished gold metallic handle.findReplace.png): Designed a compact search lens paired with reciprocal exchange swap arrows in neon emerald (#10b981) and electric amber/gold (#f59e0b) with sharp contour borders.zoomIn.png): Designed an ocean azure magnifying glass enclosing a bold, high-contrast white plus sign (+).zoomOut.png): Designed a matching ocean azure magnifying glass enclosing a bold, high-contrast white minus sign (−).indentGuide.png): Designed a code block hierarchy with glowing dual amber/gold vertical alignment rails (#f59e0b) guiding indented emerald and cyan code bars.SPKENC01 Magic Header: New documents encrypted with AES-256-CBC and HMAC-SHA256 authenticated containers use the SPKENC01 format header.NSPENC01 encrypted containers, ensuring users can decrypt existing confidential documents without migration friction.MarkOccurrences::lastQuery() to return const QString & instead of value copy, eliminating allocation overhead on hot search paths.TabsQuickActionsBar(MainWindow *mainWindow, QWidget *parent = nullptr) as explicit to prevent unintended implicit conversions.caret and anchor struct members in CaseConverter::SelectionRange.QTextCodec * pointer const in EncodingDetector::detectEncoding.i18n/SparkNotePad_id.ts and documentation for natural, idiomatic Indonesian developer terminology.File -> New Window)--multi-instance, --new-window, and -m argument detection in main.cpp and SparkNotePadApplication.cpp.QApplication::applicationName for spawned child instances, bypassing SingleApplication interception and allowing multiple concurrent primary windows./usr/bin/open -n <Bundle.app> --args --multi-instance.📁 Themes by Family) in MainWindow.cpp, eliminating menu overflow.PreferencesDialog to match the modern card aesthetic, typography, and palette of AboutDialog.AboutDialog default light mode palette to Radix/Tailwind Slate (#0f172a primary text, #ffffff card, #f8fafc background) achieving >19:1 contrast ratio.-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif) with explicit font weights and antialiasing, eliminating blurry text rendering.newfile, openFile, saved, unsaved, saveAll, closeFile, closeAll, cut, copy, paste, undo, redo, find, findReplace, zoomIn, zoomOut, wrap, invisibleChar, indentGuide, startRecord, stopRecord, playRecord, printer, readonly, etc.), refined specifically for modern text editor workflows and distinct from legacy branch icons.border-bottom: 1px solid %3; and refined padding to QToolBar in src/features/ThemeManager.cpp, restoring the classic horizontal separator line between the toolbar and document tabs.%6 / blue accent) from ads--CDockWidgetTab[activeTab="true"], ads--CDockWidgetTab[focused="true"], and QTabBar::tab:selected, restoring the classic soft peach (rgb(255, 202, 176)) active tab border and orange focus top border matching the original NoteSciPad/NotepadNext standard in npp.css.#include <QAbstractItemView> in src/dialogs/PreferencesDialog.cpp, resolving compiler failure on Linux (ubuntu-24.04) where comboBoxTheme->view()->setVerticalScrollBarPolicy(...) required the complete definition of QAbstractItemView.ThemeManager::setThemeMode and toggleTheme now dynamically swap between default light (defaultLight) and dark (catppuccinMocha) palettes, persist settings, and emit paletteChanged to synchronize all GUI controls.Themes menu hierarchy, PreferencesDialog, ThemeSwitcherDialog, and AboutDialog badges, providing clean, professional desktop typography.QToolButton card styling in src/features/ThemeManager.cpp and explicitly established flat, borderless, transparent styling for QToolBar QToolButton. Restores original clean editor iconography without button outline boxes.text) on ASCII architecture and layout diagrams (MD040), eliminating hard tabs (MD010), and normalizing code fence blank line spacing (MD031).FindReplaceDialog::showMessage to dynamically evaluate active theme mode (dark vs light) and apply high-contrast palette tokens (#3fb950 / #f85149 / #58a6ff on dark; #1a7f37 / #cf222e / #0969da on light) with medium font-weight, ensuring crisp readability and eliminating contrast degradation. Refined ThemeSwitcherDialog subtitle and shortcut tip typography to use dynamic opacity (opacity: 0.8) instead of washed-out hardcoded gray, achieving uniform contrast across all 75 visual themes.FindReplaceDialog.ui: Increased verticalLayout_6 checkbox column spacing from 0 to 6px, preventing checklist item squishing.PreferencesDialog.ui: Added spacing (8px to verticalLayout_4, 6px to verticalLayout_2, verticalLayout_3, and verticalLayout_5).TailOptionsDialog.ui: Added 8px spacing to verticalLayout_2 for behavior and protection checkboxes.error: invalid use of non-static member function 'void FindReplaceDialog::count()') where showMessage(tr("Mark: %Ln match in entire file", "", count), ...) referenced count resolving to the class member function pointer instead of the local match tally. Replaced with matchCount and eliminated variable shadowing (count -> totalReplaced, editor -> targetEd) in replaceAll.
ClipboardHistoryDialog.ui: Added 14px spacing to layoutOptions horizontal checkbox row.RegexHelperDialog.ui: Added 12px spacing to horizontalLayoutFlags regex options checklist.RunDialog.ui: Added 14px spacing to horizontalLayoutOptions execution flags row.MainWindow.h & MainWindow.cpp: Passed actionNames by const QStringList & in buildMenu(const QStringList &actionNames) rather than by-value copy, eliminating temporary heap allocations on popup menu construction; declared checkForUpdatesFinished as static.PreferencesDialog.cpp: Enforced const correctness on SparkNotePadApplication *app in populateTranslationComboBox.ThemeSwitcherDialog.cpp: Initialized m_initialPaletteId in the constructor member initializer list, eliminating redundant default construction and assignment.PreferencesDialog.h: Marked constructor explicit to prevent implicit conversions.FileBrowserDock.h & FileBrowserDock.cpp: Returned const QString & in currentDirectory() to eliminate heap string allocations on directory lookups.ISearchResultsHandler.h, SearchResultsCollector.h, SearchResultsCollector.cpp, SearchResultsDock.h, SearchResultsDock.cpp: Passed searchTerm and line parameters by const QString & instead of by-value copies; eliminated shadowed variable declaration in SearchResultsDock::newSearch.LuaConsoleDock.h & LuaConsoleDock.cpp: Passed line by const QString & in historyAdd.AutoClosePairs.h & AutoClosePairs.cpp: Marked isWordChar as static.DocumentationManager.h: Marked openKeyboardShortcutsGuide and openOnlineRepository as static.FocusedView.h: Marked ensureHiddenLineStyle as static.ThemeManager.cpp: Implemented universal stylesheet rules for QCheckBox and QRadioButton with spacing: 8px;, padding: 3px 4px;, min-height: 20px;, and explicit 16x16 px indicator dimensions (4px border-radius for checkboxes, 9px for radio buttons).src/icons/checkmark.svg via src/resources.qrc and image: url(:/icons/checkmark.svg);, restoring crisp, high-DPI vector checkmarks on checked checkboxes across all desktop platforms without reliance on platform-specific native fallbacks.border: 3px solid %5; background-color: %6; on checked state.FindReplaceDialog.ui: Enhanced Search Mode and Transparency group box layouts with explicit 8px spacing and 8/10px margins; increased vertical checkbox list spacing to 8px.PreferencesDialog.ui: Enforced 8px vertical and horizontal spacing across all general settings checkbox and radio button rows (verticalLayout_2, verticalLayout_3, verticalLayout_5, horizontalLayout_2).TransparencyDialog.ui: Added 10px spacing to main layout and 8px spacing with 8/10px margins to verticalLayoutMode radio button group.EncodingSelectionDialog.ui: Configured 8px spacing and 8/10px margins for character set conversion action radio buttons (layoutAction).MacroRunDialog.ui: Configured 8px vertical spacing and 8px horizontal button layout spacing.PerformanceDiagnosticsDialog.ui: Added 8px spacing and 8/10px margins to diagnostic toggle layout (verticalLayout_2).TailOptionsDialog.ui: Added 8/10px margins to verticalLayout_2 for clean visual alignment.ThemeSwitcherDialog.cpp: Added 12px spacing and 0/2px margins to filterLayout, dynamically calculating theme category radio counts using kTotalThemePaletteCount.ManageToolsDialog.cpp: Configured 10px vertical spacing and 16px margins for dialog form layout.StatusBarCustomizerDialog.cpp: Configured 8px vertical spacing and 14/16/14/14px margins for status bar element checklist.FocusedViewDialog.cpp: Configured 16px horizontal spacing, 8px vertical spacing, and 14/16/14/14px margins for options grid.ThemePaletteData.h: Introduced dedicated notepadNext palette as the default light workspace palette (#f0f2f5 window, #fafbfc canvas/card, #e1e4e8 border, #24292f primary text, #57606a secondary text), matching the original NotepadNext comfortable workspace aesthetic and preventing harsh, eye-straining pure white glare.defaultLight to map directly to notepadNext palette in findThemePaletteById, and updated light fallback color tokens in ThemeManager::applyTheme and getThemeStyleSheet.materialDeepOcean, oneDarkPro, dracula, solarizedDark, ayuDark, kanagawaDragon) to guarantee crisp, sharp text rendering exceeding WCAG AAA standards (never blurry or excessively dark).FocusedViewDialog and ThemeSwitcherDialog to use opacity: 0.8; font-style: italic; for seamless readability across dark and light palettes..github/workflows/build.yml and .github/workflows/release.yml with empty workflow_dispatch triggers and branch support across 1.*, develop, and main, adhering to Checkov CKV_GHA_7 security standards while permitting manual branch selection.SparkNotePad, unit tests to SparkNotePadTests / SparkNotePadUnitTests.SparkNotePadApplication with forward-compatibility type aliases (using NoteSciPadApplication = SparkNotePadApplication; and using NotepadNextApplication = SparkNotePadApplication;).NotepadNext Artifacts: Purged legacy action identifiers (actionAboutNotepadNext -> actionAboutSparkNotePad), modernized NSIS Windows installer scripts (installer.nsi, utils.nsh), updated icon batch scripts (icon/svg_to_ico.bat), environment templates (.env.example), and localization automation (.github/workflows/lupdate.yml)..github/workflows/release.yml with resilient execution condition (always() && !cancelled()), ensuring release assets (DMGs, DEBs, RPMs) publish reliably even if macOS runners experience queue delays.io.github.alsyundawy.SparkNotePad.yml), AppStream metainfo, desktop entry, Homebrew Cask and Formula (sparknotepad.rb), and macOS Info.plist bundle identifier (io.github.alsyundawy.SparkNotePad).SparkNotePad.NoteSciPad v1.2.0 delivers comprehensive visual, architectural, and engine upgrades: full compliance with Apple Human Interface Guidelines for application icons (eliminating oversized macOS Dock rendering), an elegant vector-badged ModernMessageBox replacing dated popups, official source upgrades to Scintilla 5.6.7, Lexilla 5.5.4, and Lua 5.5.1, a native Python 3.13+ scripting bridge, local SSL certificate generation via MkcertDialog, File menu expansions (New Window and Export to PDF...), strict WCAG AAA color contrast compliance across AboutDialog and global labels, custom Trunk C++ & Qt static analysis, and extended CI/CD build matrix coverage across Qt 6.5, Qt 6.8 LTS, Qt 6.10, and Qt 6.11.
16x16, 16x16@2x, 32x32, 32x32@2x, 128x128, 128x128@2x, 256x256, 256x256@2x, 512x512, 512x512@2x) packaged into native NoteSciPad.icns.NoteSciPad.ico (16, 24, 32, 48, 64, 128, 256 px) and high-DPI 512x512 Linux desktop icon.ModernMessageBox)QMessageBox popups (such as “Save changes to New 1?”) with a sleek, rounded dialog adhering to active theme colors.-apple-system, SF Pro Text, Helvetica Neue, Arial.Inter, Ubuntu, Roboto, DejaVu Sans, sans-serif.JetBrains Mono, SF Mono, Menlo, DejaVu Sans Mono, Liberation Mono.Ctrl+Shift+N / Cmd+Shift+N): Instantly spawns a detached, independent NoteSciPad window process.QPdfWriter and QPainter, including document headers, line numbering, and page numbering.scintilla.org archives into thirdparty/scintilla/, unlocking latest multi-caret and fold rendering enhancements.thirdparty/lexilla/ for robust multi-language lexing.thirdparty/lua/ directly from lua.org official source archives (LUA_VERSION_NUM 505).PythonScriptEngine): Integrated execution bridge prioritizing Python 3.13 and 3.14 runtimes with safety timeouts (10s for snippets, 15s for files), standard I/O capture, and direct Scintilla selection manipulation (Ctrl+Shift+P / Cmd+Shift+P).MkcertDialog)Run → Generate Development SSL Certificate (mkcert/OpenSSL)... (Ctrl+Alt+C) with automatic environment detection.mkcert for locally trusted certificates with CA root installation, and seamlessly falls back to OpenSSL self-signed generation if mkcert is not present.MkcertDialog): Styled with ThemePalette tokens, fixed-width command logging view, and instant system notifications via ModernMessageBox.kotlin.lua): Syntax highlighting definitions for Kotlin keywords, coroutines (suspend, flow, channel), annotations, standard types, and DSL builders.graphql.lua): Definitions for queries, mutations, subscriptions, schemas, types, directives, and scalar primitives.wat.lua): Definitions for WebAssembly Text format (module, func, param, result, i32, i64, f32, f64, instructions).bicep.lua): Definitions for infrastructure-as-code resources, modules, parameters, variables, outputs, and decorators.src/scripts.qrc with verified XML and Lua syntax.txtPri (high contrast #1f2328 on light, #e0e0e0 on dark) and txtSec (#656d76 / #9aa0a6) across AboutDialog, ModernMessageBox, and all modal cards.QLabel Theme Rule in ThemeManager.cpp: Added universal QLabel { color: %2; } rule ensuring all labels across the application adhere to active palette contrast.AboutDialog directly to ThemeManager::themeChanged signal for real-time live repainting without dialog re-instantiation.NoteSciPadApplication.h and NoteSciPadApplication.cpp with seamless alias and include-forwarding compatibility.NotepadNext leftover files (NotepadNext-Default-Editor.sh, deploy/linux/NotepadNext.desktop, icon/NotepadNext.{icns,ico,svg}, src/icons/NotepadNext.png).NotepadNext_*.ts to NoteSciPad_en.ts and NoteSciPad_id.ts, resolving TranslationManager runtime locale discovery..ts), preserving 100% verified English (en) and Indonesian (id) translations.IMPLEMENTATION_PLAN.md, TASK_LIST.md, WORKGROUND.md, readme-task.md).build.yml and release.yml across 12 CI matrix jobs (3 platform architectures: macOS Intel macos-15-intel, macOS Apple Silicon macos-15, and Linux Ubuntu ubuntu-24.04 × 4 Qt 6 versions: Qt 6.5, 6.8 LTS, 6.10, and Qt 6.11)..trunk/trunk.yaml with dedicated cppcheck-qt linter definition running --library=qt --language=c++ --enable=warning,style,performance,portability, providing first-class Qt analysis across all 277 files in src/.clang-format@20.1.0 and pragma-once header guard verification in Trunk Check.jurplel/install-qt-action@v4.4.1, eliminating runner template syntax errors across Ubuntu Linux matrices.C descriptor in favor of CPP with Qt library support, tuned YAML/ShellCheck/Markdown rules, achieving 100% green pass (✓).workflow_dispatch trigger for manual on-demand execution.cmake/PackagingMac.cmake):
rm -f) and forced detach (hdiutil detach /Volumes/NoteSciPad -force) prior to macdeployqt -dmg, resolving intermittent hdiutil: resource busy race conditions on GitHub Actions macOS runners.MainWindow: Added null-pointer safeguards in updateGui, updateSaveStatusBasedUi, and checkFileForStateChange.NoteSciPadApplication: Default-initialized all manager pointers (settings, editorManager, sessionManager, recentFilesListManager, translationManager) to nullptr.CryptoManager: Initialized StrengthResult struct members and eliminated dead pointer increment.LuaConsoleDock: Upgraded legacy C cast to type-safe reinterpret_cast<const char *>.MkcertDialog, ModernMessageBox, and scoped status in LuaExtension.NoteSciPad v1.1.0 delivers streamlined native Light and Dark modes without external palette overhead, restored toolbar dividing line and classic peach tab styling, Scintilla 5.6.7/Lexilla 5.5.4/Lua 5.5.1 engine upgrades, inline mathematical expression evaluation, 7 trending language lexers, redesigned 5-tab modern About dialog, universal dialog checkbox/radio layout overhaul, and pixel-perfect 16x16 toolbar iconography.
kLightPalette and kDarkPalette) without external palette catalogs or ThemeSwitcherDialog.#181a1f, #1e1e1e, #25282c) caused by downscaled 32x32 faint outlines.find.png): High-precision azure/cyan magnifying glass with 3D specular white gleam and polished gold metallic handle.findReplace.png): Compact search lens paired with reciprocal exchange swap arrows in neon emerald (#10b981) and electric amber/gold (#f59e0b) with sharp contour borders.zoomIn.png): Ocean azure magnifying glass enclosing a bold, high-contrast white plus sign (+).zoomOut.png): Matching ocean azure magnifying glass enclosing a bold, high-contrast white minus sign (−).indentGuide.png): Code block hierarchy with glowing dual amber/gold vertical alignment rails (#f59e0b) guiding indented emerald and cyan code bars.spacing: 8px;, padding: 3px 4px;, min-height: 20px;, and 16x16 indicator dimensions (4px border-radius for checkboxes, 9px for radio buttons).src/icons/checkmark.svg via src/resources.qrc and image: url(:/icons/checkmark.svg);, restoring crisp vector checkmarks without platform rendering anomalies.border: 3px solid %5; background-color: %6; on checked state.thirdparty/scintilla/, providing enhanced multi-caret editing, scroll optimization, and sub-millisecond line navigation.thirdparty/lexilla/ for robust multi-language lexing.thirdparty/lua/ directly from upstream source archives.border-bottom: 1px solid %3; and refined padding to QToolBar in src/features/ThemeManager.cpp, restoring the clean horizontal separation line between toolbar and editor tabs.rgb(255, 202, 176)) active tab top border and orange focus top border matching npp.css, stripping out unwanted blue accent line from ads--CDockWidgetTab.AboutDialog):
Ctrl+Shift+E / Cmd+Shift+E): Powered by MathEvaluator and InlineMathEvaluator, allowing instant calculation of selected expressions or current line (arithmetic, trigonometry, logarithms, powers, roots, constants pi, e, tau, phi).2 * pi * 5 = 31.4159265) or replacing expression directly with formatted numerical result.mojo.lua): Modular Mojo systems programming language syntax (.mojo, .🔥).solidity.lua): Ethereum smart contract language syntax (.sol).julia.lua): High-performance scientific computing language syntax (.jl).docker.lua): Multi-stage container definitions (Dockerfile, Containerfile).terraform.lua): HashiCorp HCL & OpenTofu infrastructure as code (.tf, .tfvars, .tofu).protobuf.lua): Google Protocol Buffers 3 & gRPC definitions (.proto).mermaid.lua): Flowcharts, sequence diagrams, and architecture diagrams (.mermaid, .mmd).NoteSciPad v1.0.0 marks the premier official release of an independent, ultra-lightweight, and high-performance text and source code editor engineered natively for macOS (Apple Silicon ARM64 & Intel x86_64) and Linux (Ubuntu, Debian, Fedora, Flatpak, and AppImage).
src/ScintillaNext.h / src/ScintillaNext.cpp), providing rock-solid editing stability, multi-caret editing, sub-millisecond line navigation, and zero external runtime library dependencies.scripts/verify-engine-invariants.sh) ensuring NoteSciPad never substitutes, swaps, or abstracts away its native Scintilla and Lexilla engines.arc4random_buf on macOS, OpenSSL / BCrypt on Linux), and HMAC-SHA256 authentication tag integrity verification.secureZeroMemory() — a portable volatile-pointer-indirection zeroing helper (semantically equivalent to explicit_bzero on Linux / SecureZeroMemory on Windows) applied to all aesKey[32], hmacKey[32], and derived[64] stack buffers in CryptoManager.cpp.CryptoManager, DecryptDialog): Interactive modal workflows with keyboard shortcuts (Ctrl+Alt+E to encrypt, Ctrl+Alt+D to decrypt) and lock status indicators.tail -f): Background filesystem watching (QFileSystemWatcher) with debounced auto-reloading (500ms), auto-scrolling to EOF, and non-modal log updates (Ctrl+Alt+Y)..LOG header detection and automatic timestamp appending upon opening and saving.ThemeManager): Complete collection of 25 curated developer theme families (Catppuccin, Dracula, Tokyo Night, Nord, One Dark, Gruvbox, Solarized, GitHub, Monokai, Rosé Pine, Ayu, Kanagawa, Everforest, Night Owl, Material, SynthWave ‘84, Cyberpunk, Shades of Purple, Poimandres, Horizon, Andromeda, Nightfox, Cobalt2, Alabaster, and Tomorrow).doc/COLOR_STANDARDS_AND_ACCESSIBILITY.md (ADR-024).scColor(r, g, b) and scFromRgb(QRgb) helpers eliminating BGR inversion across macOS and Linux.NSServicesHandler): Native AppKit service bindings (Open Selection in NoteSciPad, Open File Path in NoteSciPad) registered in Info.plist.ScreenDisplayManager): Multi-display geometry safety, off-screen restoration prevention, and fractional DPI scaling.TransparentWindowManager): Dynamic opacity control (20%–100%) with alpha-channel compositing and global shortcut (Ctrl+Alt+T).NotepadNext-Default-Editor.sh for one-click file association across common development extensions.uchardet with one-click conversion across UTF-8, UTF-8 BOM, ANSI, UTF-16LE, UTF-16BE, Shift-JIS, GB18030, and Big5.JsEvaluator, JsEvaluationDialog): Evaluate math, regex, JSON, and text transforms. On macOS, uses the native JavaScriptCore framework via Objective-C++ bridge (sandboxed). On Linux, spawns an external node, bun, deno, or quickjs runtime process with strict 3-second CPU execution timeout (Ctrl+Shift+J).RegexHelperDialog): Live interactive regular expression matcher with multiline, dot-all, and case-sensitivity toggles (Ctrl+Alt+Shift+R).ColorPreviewCallTip): Real-time color swatches and tooltips displayed directly above hexadecimal (#RRGGBB), RGB, RGBA, and HSL color codes under cursor.Base64Utils): Instant document or selection encoding and decoding.CharacterInfo): Deep Unicode character breakdown including code point (U+XXXX), decimal, and category.EditorInfoStatusBar): Modular field customizer with persistent visibility settings, clickable encoding picker, and right-click EOL conversion.io.github.alsyundawy.NoteSciPad.metainfo.xml adhering to FreeDesktop specifications.io.github.alsyundawy.NoteSciPad.desktop with categories, mime-types, and vector icons.io.github.alsyundawy.NoteSciPad.yml recipe supporting sandboxed Linux deployment.ReleaseManager): Semver release comparison against GitHub Releases API with notification dialogs and direct package downloads.build.yml): Continuous multi-platform builds testing 8 platform targets (Ubuntu 24.04 with GCC 6.5 & 6.8; macOS 15 Apple Silicon with Qt 6.5, 6.8, 6.10; macOS 15 Intel with Qt 6.5, 6.8, 6.10) with 100% green exit status.mega-linter.yml): Static code and configuration verification across 35+ linters with 0 errors.codeql.yml): Deep semantic security analysis with 0 vulnerabilities detected.codespell.yml): Lexicon and spelling validation across 100% of repository files..trunk/trunk.yaml): Fast, lightweight native static check (trunk check -n -j 2) executing in 0.3s without CPU/RAM spikes.doc/13_PILLARS_CODE_REVIEW_REPORT.md (ADR-025).All release packages and binaries are automatically compiled, tested, and packaged natively on GitHub Actions cloud runners across macOS Apple Silicon (arm64), macOS Intel (x86_64), and Linux Ubuntu/Debian/Fedora.
| Release Version | Branch | Tag | Platform / Architecture | Package File Name | Size | Toolchain & Qt |
|---|---|---|---|---|---|---|
| v1.3.5 | main / 1.3.5 |
v1.3.5 |
macOS Apple Silicon (arm64) | SparkNotePad-v1.3.5-arm64.dmg |
28.99 MB | Apple Clang / Qt 6.8 LTS |
| v1.3.5 | main / 1.3.5 |
v1.3.5 |
macOS Intel (x86_64) | SparkNotePad-v1.3.5-x64.dmg |
29.80 MB | Apple Clang / Qt 6.12 |
| v1.3.5 | main / 1.3.5 |
v1.3.5 |
Linux Debian / Ubuntu (x86_64) | sparknotepad_1.3.5_amd64.deb |
4.07 MB | GCC 14 / Qt 6.8 |
| v1.3.5 | main / 1.3.5 |
v1.3.5 |
Linux Fedora / RHEL (x86_64) | sparknotepad-1.3.5-1.x86_64.rpm |
4.06 MB | GCC 14 / Qt 6.8 |
| v1.3.5 | main / 1.3.5 |
v1.3.5 |
macOS / Linux Association Script | SparkNotePad-Default-Editor.sh |
18.66 KB | POSIX Shell |
| v1.3.0 | 1.3.0 |
v1.3.0 |
macOS Apple Silicon (arm64) | SparkNotePad-v1.3.0-arm64.dmg |
28.88 MB | Apple Clang / Qt 6.8 LTS |
| v1.3.0 | 1.3.0 |
v1.3.0 |
macOS Intel (x86_64) | SparkNotePad-v1.3.0-x64.dmg |
29.10 MB | Apple Clang / Qt 6.8 LTS |
| v1.3.0 | 1.3.0 |
v1.3.0 |
Linux Debian / Ubuntu (x86_64) | sparknotepad_1.3.0_amd64.deb |
3.99 MB | GCC 13 / Qt 6.8 |
| v1.3.0 | 1.3.0 |
v1.3.0 |
Linux Debian / Ubuntu Qt 6.5 | sparknotepad_1.3.0-qt6.5_amd64.deb |
3.96 MB | GCC 13 / Qt 6.5 |
| v1.3.0 | 1.3.0 |
v1.3.0 |
Linux Debian / Ubuntu Qt 6.11 | sparknotepad_1.3.0-qt6.11_amd64.deb |
3.99 MB | GCC 13 / Qt 6.11 |
| v1.3.0 | 1.3.0 |
v1.3.0 |
Linux Fedora / RHEL (x86_64) | sparknotepad-1.3.0-1.x86_64.rpm |
3.97 MB | GCC 13 / Qt 6.8 |
| v1.3.0 | 1.3.0 |
v1.3.0 |
Linux Fedora / RHEL Qt 6.5 | sparknotepad-1.3.0-qt6.5-1.x86_64.rpm |
3.94 MB | GCC 13 / Qt 6.5 |
| v1.3.0 | 1.3.0 |
v1.3.0 |
Linux Fedora / RHEL Qt 6.11 | sparknotepad-1.3.0-qt6.11-1.x86_64.rpm |
3.97 MB | GCC 13 / Qt 6.11 |
| v1.3.0 | 1.3.0 |
v1.3.0 |
macOS / Linux Association Script | SparkNotePad-Default-Editor.sh |
18.66 KB | POSIX Shell |
| v1.2.0 | 1.2.0 |
v1.2.0 |
macOS Apple Silicon (arm64) | NoteSciPad-v1.2.0-arm64.dmg |
27.98 MB | Apple Clang / Qt 6.8 LTS |
| v1.2.0 | 1.2.0 |
v1.2.0 |
macOS Intel (x86_64) | NoteSciPad-v1.2.0-x64.dmg |
28.22 MB | Apple Clang / Qt 6.8 LTS |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Linux Debian / Ubuntu (x86_64) | notesci-pad_1.2.0_amd64.deb |
3.94 MB | GCC 12 / Qt 6.8 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Linux Debian / Ubuntu Qt 6.5 | notesci-pad_1.2.0-qt6.5_amd64.deb |
3.94 MB | GCC 12 / Qt 6.5 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Linux Debian / Ubuntu Qt 6.11 | notesci-pad_1.2.0-qt6.11_amd64.deb |
3.97 MB | GCC 12 / Qt 6.11 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Linux Fedora / RHEL (x86_64) | notesci-pad-1.2.0-1.x86_64.rpm |
3.93 MB | GCC 12 / Qt 6.8 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Linux Fedora / RHEL Qt 6.5 | notesci-pad-1.2.0-qt6.5-1.x86_64.rpm |
3.93 MB | GCC 12 / Qt 6.5 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Linux Fedora / RHEL Qt 6.11 | notesci-pad-1.2.0-qt6.11-1.x86_64.rpm |
3.96 MB | GCC 12 / Qt 6.11 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
Checksum Verification | SHA256SUMS.txt |
472 B | SHA-256 |
| v1.2.0 | 1.2.0 |
v1.2.0 |
macOS / Linux Association Script | NoteSciPad-Default-Editor.sh |
18.93 KB | POSIX Shell |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
macOS Apple Silicon (arm64) | NoteSciPad-v1.1.0-arm64.dmg |
28.18 MB | Apple Clang / Qt 6.8 LTS |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
macOS Intel (x86_64) | NoteSciPad-v1.1.0-x64.dmg |
28.64 MB | Apple Clang / Qt 6.8 LTS |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
Linux Debian / Ubuntu (x86_64) | notesci-pad_1.1.0_amd64.deb |
4.08 MB | GCC 12 / Qt 6.8 |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
Linux Debian / Ubuntu Qt 6.5 | notesci-pad_1.1.0-qt6.5_amd64.deb |
4.06 MB | GCC 12 / Qt 6.5 |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
Linux Fedora / RHEL (x86_64) | notesci-pad-1.1.0-1.x86_64.rpm |
4.07 MB | GCC 12 / Qt 6.8 |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
Linux Fedora / RHEL Qt 6.5 | notesci-pad-1.1.0-qt6.5-1.x86_64.rpm |
4.05 MB | GCC 12 / Qt 6.5 |
| v1.1.0 | 1.1.0 / develop |
v1.1.0 |
macOS / Linux Association Script | NoteSciPad-Default-Editor.sh |
18.94 KB | POSIX Shell |
| v1.0.0 | 1.0.0 |
v1.0.0 |
macOS Apple Silicon (arm64) | NoteSciPad-v1.0.0-arm64.dmg |
26.52 MB | Apple Clang / Qt 6.8 LTS |
| v1.0.0 | 1.0.0 |
v1.0.0 |
macOS Intel (x86_64) | NoteSciPad-v1.0.0-x64.dmg |
28.29 MB | Apple Clang / Qt 6.8 LTS |
| v1.0.0 | 1.0.0 |
v1.0.0 |
Linux Debian / Ubuntu (x86_64) | notesci-pad_1.0.0_amd64.deb |
4.08 MB | GCC 12 / Qt 6.8 |
| v1.0.0 | 1.0.0 |
v1.0.0 |
Linux Debian / Ubuntu Qt 6.5 | notesci-pad_1.0.0-qt6.5_amd64.deb |
4.06 MB | GCC 12 / Qt 6.5 |
| v1.0.0 | 1.0.0 |
v1.0.0 |
Linux Fedora / RHEL (x86_64) | notesci-pad-1.0.0-1.x86_64.rpm |
4.07 MB | GCC 12 / Qt 6.8 |
| v1.0.0 | 1.0.0 |
v1.0.0 |
Linux Fedora / RHEL Qt 6.5 | notesci-pad-1.0.0-qt6.5-1.x86_64.rpm |
4.05 MB | GCC 12 / Qt 6.5 |
| v1.0.0 | 1.0.0 |
v1.0.0 |
Checksum Verification | SHA256SUMS.txt |
472 B | SHA-256 |
| v1.0.0 | 1.0.0 |
v1.0.0 |
macOS / Linux Association Script | NoteSciPad-Default-Editor.sh |
18.94 KB | POSIX Shell |
@alsyundawy) — ALSYUNDAWY IT SOLUTION@dail8859) / NotepadNext: Foundational cross-platform Qt scaffolding and architectural heritage.Scintilla 5.6.7) and lexers (Lexilla 5.5.4).@zufuliu) / Notepad4: Text transformation ergonomics, Scintilla integration patterns, and utility algorithms.@cxasm) / Notepad–: Cross-platform multi-tab design paradigms and text editing methodologies.@donho) / Notepad++: The pioneering Windows open-source text editor that inspired the modern notepad lineage.NotepadPlusPlusIcons): Classic toolbar and tool iconography.