Skip to content

Releases: intelQong/NotionFlow

NotionFlow v1.4.0 - Simplified Pure Desktop Mode for iOS & iPadOS

Choose a tag to compare

@intelQong intelQong released this 05 Sep 18:08

NotionFlow v1.4.0: Simplified Pure Desktop Mode

🎯 What Changed

  • Zero Bloat & Streamlined Architecture: Removed intrusive floating action bars, bottom keyboard toolbars, forced column carousels, and DOM-mutating touch handles that cluttered the viewport and fought with Notion's native React engine.
  • 4x Lighter: Script bundle reduced from 73KB to 17KB.
  • Bulletproof Desktop Spoofing:
    • Overrides User-Agent and platform to Desktop macOS Safari.
    • Strips prototype touch event properties (ontouchend) to defeat Notion's iPad detection check ("MacIntel" === platform && "ontouchend" in document).
    • Intercepts and locks window.CONFIG.isMobile = false and window.__mobileAppFeatures = {}.
    • Strips `meta[name="apple-itunes-app"]\Smart App Banner automatically via MutationObserver.
  • Native Responsive Usability:
    • Off-canvas slide-over drawer for desktop sidebar on narrow screens (< 768px).
    • Responsive constraints for desktop dialogs (Settings & Members, Quick Find, Share) so they fit comfortably on mobile viewports.
    • Smooth -webkit-overflow-scrolling: touch momentum scrolling for database tables, boards, and timelines.
  • Verified on Playwright WebKit: Tested across emulated iPhone 14 Pro and iPad Pro 11.

NotionFlow v1.3.4 - Smart Banner & Mobile Feature Flags Neutralizer

Choose a tag to compare

@intelQong intelQong released this 05 Sep 16:05

NotionFlow v1.3.4 Release Notes

  • Neutralize `meta[name="apple-itunes-app"]\Smart App Banner with immediate execution and MutationObserver.
  • Freeze window.__mobileAppFeatures to prevent Notion's mobile feature flags from triggering mobile home routing (supportsNativeHome).
  • Ensure userscript is ready for direct installation in Safari Userscripts extension.

NotionFlow v1.3.3 - Safari Page Context & Desktop Settings Fix

Choose a tag to compare

@intelQong intelQong released this 05 Sep 15:28

NotionFlow v1.3.3 Release Notes

🎯 Key Fixes & Architecture Improvements

  1. Restored @grant none for Direct Page Execution

    • Root Cause: Specifying @grant GM_xmlhttpRequest forced Safari Userscripts extension (and Tampermonkey) to isolate the script inside an ISOLATED content-script world. In that isolated world, overrides on window.CONFIG, navigator.userAgent, and Screen.prototype never reached the page's MAIN JavaScript context where Notion's client bundle ran, causing Notion to boot as standard mobile.
    • Fix: Reverted @grant to none so the userscript runs uninhibited in the page context. Update checks now leverage native fetch() with clean error silencing under restrictive page CSP.
  2. Strict Desktop Sidebar Targeting for Settings & Notifications

    • Root Cause: findNotionSettingsButton() previously searched document-wide for [aria-label*="Settings"]. Mobile Notion renders a bottom navigation bar with that exact label; clicking it invoked Notion's mobile drawer store (r(86231).O.setState({ open: true })).
    • Fix: Restricted queries strictly to desktop sidebar containers (.notion-sidebar-container, .notion-sidebar).
  3. Native Notion SPA Router Integration (?openSettingsTab)

    • By analyzing Notion's client bundle router (806127), we mapped the openSettingsTab parameter directly to Notion's desktop space settings store (r(802724).Ay).
    • NotionFlow now dispatches ?openSettingsTab=account and ?openSettingsTab=notifications via history state to reliably invoke Notion's desktop settings modals regardless of sidebar state.
  4. Preserved Desktop Modal Layout

    • Removed destructive CSS ([role="dialog"] > div { flex-direction: column !important; }) that was squashing Notion's two-column desktop modal into an unreadable vertical mobile layout.

📦 Distribution Assets

  • notion-flow.user.js: Standard userscript for Safari Userscripts extension, Stay, Orion, Tampermonkey.
  • notionflow-injection.js: Standalone bundle for native iOS WKWebView / WKUserScript wrappers.

NotionFlow v1.3.2 - Live WebKit Compatibility & Boot Crash Fix

Choose a tag to compare

@intelQong intelQong released this 05 Sep 15:02

What's New in v1.3.2 🚀

  • Critical Boot Crash Fix: Fixed live startup crash on app.notion.com caused by CONFIG_OVERRIDE clobbering Notion's internal configuration bundle. Safely hooks window.CONFIG.isMobile via dynamic property descriptors so React initializes cleanly with 0 errors.
  • Trusted Types & CSP Compliance: Added safeSetHTML utility with Trusted Types policy integration and DOMParser fallback, eliminating require-trusted-types-for 'script' CSP violations.
  • Frame Isolation (@noframes): Userscript now strictly restricts execution to window.top, preventing script injection into third-party authentication and embed iframes (Google One Tap, Stripe, Apple Sign-in).
  • Cross-Origin Auto-Update: Added GM_xmlhttpRequest and GM.xmlHttpRequest support to UpdateChecker to cleanly bypass page connect-src CSP restrictions in Safari Userscripts and userscript managers.
  • Verified in Playwright WebKit: Thoroughly tested in headless WebKit using an iPhone 14 Pro emulation profile against live https://app.notion.com and https://www.notion.so with zero errors.

NotionFlow v1.3.1 - Full Desktop Route & Settings Fix

Choose a tag to compare

@intelQong intelQong released this 05 Sep 14:37

🚀 What's New in v1.3.1

🎯 Defeated Notion's Internal iPad Detector (Root-Cause Fix)

  • Neutralized "ontouchend" in document check: Reverse-engineering Notion's production JavaScript chunks (module 900532) revealed that when navigator.platform is spoofed to "MacIntel", Notion inspects "ontouchend" in window.document to detect iPadOS. On iOS Safari/PWA, this evaluated to true, causing Notion's detector to return isIpad: true, cascading to isMobile: true and serving mobile routes for Settings and Notifications.
  • Stripped ontouch* listener properties from Document.prototype, HTMLDocument.prototype, and document so Notion's detector evaluates:
    • isIpad: false
    • isIOS: false
    • isMobile: false
    • isDesktop: true

🛡️ Locked window.CONFIG.isMobile Desktop Property Descriptor

  • Intercepted Notion's core configuration module (module 386961) using an accessor descriptor lock to guarantee window.CONFIG.isMobile is permanently forced to false.

⚡ WebKit EventTarget & MutationObserver Stability

  • Replaced Proxy wrappers on window.matchMedia with direct Object.defineProperty overrides, preventing WebKit TypeError: Can only call EventTarget.addEventListener on instances of EventTarget.
  • Debounced all DOM MutationObserver listeners using requestAnimationFrame to prevent microtask loops in WebKit.
  • Added safeAppend & safeAppendBody utilities to guarantee flawless execution at document-start.

🧪 Verified with Playwright WebKit

  • Verified inside Playwright WebKit on emulated iPhone 14 Pro:
    • Notion Detector: { isIpad: false, isIOS: false, isMobile: false, isDesktop: true }
    • window.CONFIG.isMobile: false
    • Floating Action Bar & Settings trigger: Mounted cleanly with 0 console errors.

NotionFlow v1.3.0

Choose a tag to compare

@intelQong intelQong released this 05 Sep 14:09

🚀 What's New in NotionFlow v1.3.0

  • Comprehensive Desktop Environment Masking: Fully overrides navigator.userAgent, navigator.appVersion, navigator.platform, navigator.maxTouchPoints (set to 0 to bypass iPad heuristics), and suppresses navigator.standalone PWA flags.
  • Screen Dimension Spoofing: Overrides screen.width, screen.availWidth, outerWidth, and outerHeight to 1440x900 to ensure Notion never triggers mobile routing.
  • Desktop Settings & Members Modal: Notion now serves the full desktop Settings dialog instead of simplified mobile subpages. Includes responsive styling with horizontal scrolling tab navigation on mobile screens.
  • Desktop Notifications & Inbox Overlay: Fixed notifications opening in desktop overlay popover with mobile-adapted width and touch scrolling.
  • Floating Action Bar Updates: Added direct Notifications & Inbox trigger in the FAB popover and refined Cmd+, / Ctrl+, shortcut dispatching.
  • Pointer & Display-Mode Media Query Proxying: Ensures matchMedia reports desktop pointer (fine, hover) and suppresses mobile standalone checks.

NotionFlow v1.2.0

Choose a tag to compare

@intelQong intelQong released this 05 Sep 13:58

🚀 What's New in NotionFlow v1.2.0

  • 🔄 Automatic In-App & Extension Updates:

    • Embedded standard @updateURL and @downloadURL metadata directives for automatic background updates in Safari Userscripts, Stay, Orion, and Tampermonkey.
    • Added smart background update notification banner + manual "Check for update" button inside the FAB preferences panel.
  • 🌐 Primary Web App Domain Support (app.notion.com):

    • Added explicit matching for https://app.notion.com/* (Notion's primary web app URL).
    • Seamless coverage across app.notion.com, notion.com, app.notion.so, notion.so, and *.notion.site.
    • Intercepts and suppresses mobile app store redirect banners on notion.com/mobile.
  • ⚙️ 1-Tap Access to Notion Full Settings & Members:

    • Direct access to Notion's full desktop Settings & Members dialog (Workspace identity, Members, Billing, Plans, Connections, Security, Export) directly via the ⚙️ FAB button or Cmd+,.
    • Dynamically converts desktop settings navigation into a swipeable horizontal category tab bar on mobile screens.
  • 📲 Dedicated iOS Home Screen Guide (Edge-to-Edge Standalone):

    • Complete instructions to save Notion to your iPhone/iPad Home Screen.
    • Hides Safari's top URL bar and bottom controls for a 100% full-screen native desktop experience.
  • ⚡ Pure Lightweight Userscript:

    • Zero app wrapper bloat or cloud CI requirements—compiles in milliseconds and runs instantly in Safari via the free Userscripts extension.

NotionFlow v1.1.0

Choose a tag to compare

@intelQong intelQong released this 05 Sep 13:50

What's New in v1.1.0:

  • ⚙️ Notion Full Settings & Members Access: 1-tap direct access to Notion's full desktop Settings & Members dialog (Workspace, Billing, Members, Public Sites, Connections, Security, Export) directly via the ⚙️ FAB button or Cmd+,.
  • 📱 Responsive Mobile Settings Dialog: Dynamically converts desktop settings navigation into a swipeable horizontal category tab bar on mobile viewports.
  • ⚡ Pure Userscript Focus: Dropped native app wrapper complexity for a lightweight, zero-overhead iOS Safari userscript.

📲 How to Install & Add to iPhone/iPad Home Screen (60 Seconds):

  1. Install the free Userscripts extension from the App Store.
  2. In iOS Settings ➔ Safari ➔ Extensions ➔ Userscripts, toggle ON and set permissions to Allow.
  3. Download notion-flow.user.js into your Userscripts directory in the Files app.
  4. Open https://www.notion.com in Safari.
  5. Tap the Safari Share icon (⬆️) ➔ tap Add to Home Screen ➔ name it NotionFlow and tap Add.
  6. Launch it from your Home Screen for a distraction-free, 100% full-screen native desktop experience!

NotionFlow v1.0.0

Choose a tag to compare

@intelQong intelQong released this 05 Sep 13:04

Initial release of NotionFlow Userscript for iOS Safari