Skip to content

Releases: VenkataLochanN/OctopusNotes-Public

v2026.8.7

Choose a tag to compare

@VenkataLochanN VenkataLochanN released this 07 Aug 18:10
4584abf

v2026.8.7

  • New Table tool: tap the table button in the toolbar, then drag a rectangle on the page to draw the table area — the drag preview already shows the full grid so you draw a table, not a box. A popup then lets you set the number of rows and columns with −/+ steppers and a live mini-preview, while the grid is ghosted right on the page inside your drawn area (updating live as you change rows or columns), so you see the exact table before you commit. Tables use your current pen colour, get a shaded header row, and open in selection mode right away so you can move them or resize them with the corner handle. Your last rows×columns choice is remembered for next time, and tables behave like any other ink: they save and reload with your notebook, survive rotation and page resizing, support undo/redo, can be lassoed, moved across pages, recoloured and duplicated, and show up in thumbnails and exports. The erasers pass through tables (edit them with the select tool instead).
  • New Laser pointer tool: a presentation aid — draw with the pen and a glowing trail follows the stroke (in your pen colour, sized to the dock's thickness), then fades out about a second after you lift. The trail is never saved, never hits undo, and leaves the page exactly as it was, so you can point at things on the page freely.
  • New Text tool: tap anywhere on the page and a small editor opens at that spot — type, tweak the font size with −/+, and Insert places the text as a real, editable object. Text uses your current pen colour, auto-selects so you can move or resize it immediately (the text re-wraps instead of stretching), and tapping it again with the text tool re-opens the editor prefilled. The options row has quick S / M / L size presets that are remembered, and text behaves like any other ink: undo/redo, save and reload, lasso, recolour, duplicate, move across pages, thumbnails and exports. The erasers pass through text, and rotate/flip are disabled for text boxes so they can't be visually corrupted.
  • Tables come alive — type inside cells: tap a cell of an existing table with the table tool and a small editor opens right there — type and Insert, and the text lands centred in that cell, auto-sized to fit (multi-line text wraps, the header row is bold). Blanking the text clears the cell. Every cell edit is undoable, and the text travels with the table when you move, resize (it re-flows to the new cell size), duplicate, lasso or export it.
  • Quick-edit a selected table: select a table and the floating bar grows a second row with Rows and Cols −/+ steppers plus a Header ON / OFF toggle. Tapping the steppers reshapes the grid instantly (cells that fall outside a smaller grid are dropped, and each change is a separate undo step); the header toggle shades or unshades the first row.

v2026.8.6.v2

Choose a tag to compare

@VenkataLochanN VenkataLochanN released this 06 Aug 10:28
4584abf

v2026.8.6.v2

  • Undo/redo survive rotation: rotating the screen used to destroy the drawing screen and rebuild it from scratch, which wiped the undo/redo history and hid the undo/redo buttons (on phones the whole dock collapsed, making them vanish entirely). The drawing screen now handles rotation itself, so your undo history, tool state, zoom and the dock stay exactly where you left them.
  • Undo now works after page resizes too: any width change — rotating to landscape, unfolding a foldable, entering split-screen — used to clear the undo history because the stored ink coordinates were stale. The history is now rescaled along with the page ink instead, so you can still undo strokes you drew before the resize.
  • Undo/redo buttons always stay in sync: when delete, cut or paste was your very first action, the undo button wasn't refreshed and tapping it silently did nothing. Every action now updates the button state automatically, so Undo is always there when there's something to undo.
  • Strokes are always erasable again: a wobbly or held-down pen could emit near-zero-length path segments that made a stroke invisible to the stroke eraser and to lasso selection (the geometry hit-test silently failed). Those degenerate points are now filtered out as the stroke is drawn, so every stroke can be erased and selected.
  • Folders move to the Bin together with their contents: moving a folder to the Bin used to hide its notebooks and subfolders from the main list without actually binning them — they never appeared in the Bin, and permanently deleting the folder later made them all reappear. Binning a folder now carries its entire contents along, restoring brings back the whole subtree (and un-bins any binned parent folder so nothing gets stranded invisible), and Delete permanently deletes everything inside the folder instead of resurrecting it.
  • Deleting several pages at once is now atomic: multi-select delete used to rewrite the PDF once per page, interleaved with the in-memory page renumbering — if a rewrite failed partway, the file was missing some pages while the app still thought they existed, so ink could land on the wrong pages and autosave would persist the mix-up. The whole selection is now removed in a single PDF write before any in-memory state changes, so a failed delete leaves the file and the view perfectly in sync (and it's faster too — one rewrite instead of one per page).
  • Opening a notebook after rotation no longer stutters: the new screen used to block the UI thread while it waited for the previous screen's ink save to finish writing — on a big notebook that was a visible freeze (and an ANR risk on slow storage) right after every rotation. The wait now happens on a background thread, so the first frames render instantly and the ink still loads with the just-saved strokes intact.
  • PDF cross-reference offsets are no longer truncated: xref streams written with 8-byte offset fields (/W [1 8 2]) used to be read through a 4-byte accumulator, silently corrupting the object table for those files. Offsets are now parsed at full width, and any offset that genuinely doesn't fit the file is treated as a corrupt PDF (a clear "can't edit" error) instead of silently pointing at the wrong object.
  • Corrupt compressed streams fail cleanly instead of half-decoding: a FlateDecode stream that ended early or demanded a preset dictionary we don't support used to return its partial output as if complete — for object and xref streams that meant garbage offsets rather than an error. Such streams now fail cleanly, and the affected file is reported as unreadable instead of being silently mangled.
  • Thumbnail rendering hardened against late reloads: the page-grid thumbnail engine could end up permanently rendering blank tiles if it was asked to reload after being closed (a latent path in the page reorder flow). Reloading now restarts the render worker pool, and close/reload can no longer race each other.

v2026.8.6

Choose a tag to compare

@VenkataLochanN VenkataLochanN released this 05 Aug 18:31
4584abf

v2026.8.6

  • Notebook tags, just like macOS Finder: tap the ⋯ menu on any notebook and choose Add Tag to pick one of seven colours (red, orange, yellow, green, blue, purple, grey). The tag appears as a small coloured dot on the top-left of the notebook's thumbnail in both the grid and list views — change or remove it any time from the same menu. The Tags chip on the home screen now opens the same palette: pick a colour to see every notebook tagged with it (the chip's icon tints to match, and the breadcrumb shows “Tag · Red”), tap the active colour again to clear the filter, or use “Clear filter”, the back button, or any other chip.
  • Selecting or deleting huge regions no longer freezes: lassoing a large area (or sweeping the stroke eraser across a dense page) used to run an expensive geometry hit-test against every stroke on the page on the main thread, freezing the UI before the selection even appeared. The hit-test now runs on a background thread over a safe snapshot of the page's ink, so the selection box pops in without a hitch — and if you scroll while it's computing, the selection still lands correctly on its page.
  • Deleting a big selection is now near-instant: removing a large group of strokes used to scan the whole page's stroke list once per deleted stroke (quadratic), which stuttered badly on big deletes. Deletion now removes every selected stroke in a single pass, so erase, delete, cut, and undo/redo stay fast no matter how much ink you remove at once.
  • Dense pages render far more smoothly in landscape and at zoom: every page's ink used to be re-drawn stroke-by-stroke on every frame — so any edit (or even a search highlight) forced every visible page to re-issue all of its strokes, which was worst in full-screen landscape where several pages are on screen at once. Pages with lots of ink are now rasterised once into a cached layer that is simply blitted on redraw, and the cache only re-renders a page when that page's ink actually changes. Scrolling, zooming, panning, search highlighting and undo/redo all benefit.
  • Selection ghosts stay in sync with the new rendering: the faint "ghost" of a selection's original position appears the moment you select and disappears the moment you deselect, commit, or undo — including shapes that auto-select right after being drawn.
  • Memory-safe caching: the new ink-layer cache sizes itself to the device's memory, skips very light pages (a few strokes are cheaper to draw directly), avoids caching layers too big to fit, and falls back to direct drawing under memory pressure — so nothing regresses on low-memory devices.
  • AGPL-3.0 license: OctopusNotes is now licensed under the GNU Affero General Public License v3.0. Settings → About → Licenses reflects the change with a link to the full license text.
  • Replaced PDFBox with an in-house Kotlin engine (`pdfedit`) that performs instant incremental saves, native PDF 1.5+ parsing, and bug fixes for text extraction and outline resolution across 32 unit tests. Heavily optimised pdf rendering.
  • Links in PDF (⋯ menu): lists every hyperlink in the document — external URLs open in your browser, internal links jump straight to their page. Built on a new hand-rolled link reader (PdfLinkReader) that walks each page's /Annots and understands /URI, /GoTo, and /Launch actions plus named destinations — the same way the bookmark reader works.
  • PDF properties (⋯ menu): shows the page count and every distinct page size with its standard name (A4, Letter, Legal…, in mm) — handy for spotting mixed-size imports.
  • Current page easier to spot in Pages view: the highlight border around the active page thumbnail is now thicker (3dp → 5dp), so you can find the page you're working on at a glance.
  • Active page highlight wraps the whole page card: in the Pages view the current-page outline now rings the entire item — the thumbnail, the page number and the ⋁ menu together — instead of just the thumbnail, so the page you're on is unmistakable at any grid size. The page-number row is part of the tappable card now too, so tapping the number opens that page.
  • New filled pen icon: the pen tool button uses a solid filled pen glyph instead of the old outline one — it still layers your pen colour inside the theme-tinted outline rim, so the icon stays readable against any toolbar background and updates with your current colour.
  • All toolbar and menu icons elevated: every icon button across the app — drawing toolbar, tool-option strips, search bar, home screen, page grid, popups and dialogs — now sits at 4dp elevation, giving the whole interface a crisper, layered look (tool buttons with a filled background get a subtle shadow; ripple-only buttons get the lift in z-order).
  • Licenses screen brought up to date: Settings → About → Open source licenses now credits Google Material Design Icons (Apache 2.0) and AndroidX RecyclerView (Apache 2.0), and lists JUnit (Eclipse Public License 2.0) with a link to the EPL text — PDFBox is gone from the list, matching its removal.
  • Settings page redesigned: settings are now grouped into four clean cards — Editing, Home screen, Data and About — instead of one long flat list, so related options are easy to find at a glance. One-of-N choices (notebook thumbnail, PDF thumbnail) show their current value on the row and open a single-choice dialog instead of an inline radio list; Grid/List is now a chip toggle matching the home screen's filter chips; and Export/Import moved into the Data card as tonal buttons with directional icons. All preference keys are unchanged, so existing settings carry over.
  • Switch sub-texts now explain the off state: the Add pages continuously switch says “Add new pages manually with the + icon” when off, and Show tool options says “Options stay closed when you switch tools until you tap the tool button” — no more guessing what turning something off actually does.
  • Canvas color setting: a new Settings → Editing → Canvas color row opens the full colour picker (palette, spectrum, hex, quick colours) and the colour you choose becomes the background around and between the PDF pages in the drawing view — great for reducing glare or matching your desk setup. Defaults to the classic dark surround.
  • Notebook and folder menus tidied up: the popup you get from the ⋁ arrow next to a notebook or folder name now uses proper icons (lock for Lock Note, star for Favorites, trash for Delete), consistent 52dp rows with theme-tinted icons, and a divider that separates the red Delete action from the rest — so destructive actions are unmistakable. The folder menu's colour swatches keep their grey outline now instead of tinting the whole circle.
  • Marquee text for long notebook names: a new Settings → Home screen → Marquee text switch. When on, any notebook name too wide to fit its card on the home screen slowly scrolls — it holds at the start for 2 seconds, scrolls until the end is visible, then loops. Names that fit are never animated, folders are unaffected, and switching it off restores the plain "…" truncation.
  • New template, link, export and duplicate icons: the ⋯ menu's Change template row got a proper template glyph (a grid with a plus and crop marks) instead of the reused pages-grid icon, the Links in PDF row uses the filled Material Symbols link, Export shows a real file-export icon instead of the copy glyph, and the Duplicate action in the Pages view now shows a circled-plus duplicate icon (matching the selection bar and notebook menu) instead of the copy icon — all in the same tinted, rounded Material Symbols family.

v2026.8.5.v2

Choose a tag to compare

@VenkataLochanN VenkataLochanN released this 04 Aug 19:10

v2026.8.5.v2

  • Material You theming (Android 12+): the app now follows your system's wallpaper-based colour palette — toolbar pills, buttons, dialogs, swatches and settings all re-colour themselves to match your theme, the Compose dialogs (add page / change template) follow along, and the launcher icon is themed on Android 13+. Older Android versions keep the standard palette.
  • Tool options behaviour setting: a new Settings → Tool options section lets you choose how the options pill behaves. Show when changing tools (default) pops the options open every time you pick a tool; Show only when tapped keeps them hidden after switching until you tap the tool button again.
  • Tools and options are two pills: the top dock is now split into two separate pills — the tools row, and a second pill holding the active tool's options that appears below it (or beside it on phones) with a clean gap between them. Both pills are always centred on screen, and the tools pill never shifts when the options pill appears or changes size.
  • Animated tool options: the options pill now animates when it changes — it fades in when you pick a tool and glides to its new size as you switch tools, while the tools pill stays perfectly still. The icons stay centred at all times (no more drifting up and settling down as the pill appears).
  • Perfect ovals in the shape tool: dragging out a circle or ellipse used to leave a tiny gap at the seam where the stroke closed. The outline now meets exactly on itself, so hand-drawn ovals are as seamless as the ones placed with the Exact size button.
  • Pen icon keeps its outline: the pen tool button now layers the pen colour inside a fixed theme-tinted outline rim, so the icon stays clearly visible even when the pen's colour matches the toolbar pill behind it.
  • Bookmarks stay visible on white pages: the bookmark ribbon on each page thumbnail in the Pages view now casts a soft shadow, so it no longer disappears into white page backgrounds (the shadow only rendered if the icon had an outline — it didn't, so the ribbon was invisible on bright pages).

v2026.8.5

  • New Shapes tool: a dedicated tool (next to the lasso) for drawing perfect rectangles, ellipses, triangles, lines and arrows — drag from a corner to the opposite corner and the geometry snaps clean. Every shape you draw is automatically selected so you can move it, resize it with the corner handle, recolour it or rotate it right away (no more hunting for it with the lasso). The options row also has an Exact size… button that lets you type an exact width × height (in page pixels) and places the shape centred on the page at that size.
  • Duplicating now selects the copy: after Duplicate, the new object is selected instead of the selection being dropped — the copy is offset from the original and stays selected so you can immediately drag it into place. No more invisible duplicates stacked on top of the original.
  • Quick pen colours right in the selection bar: tap the colour swatch on a selected object and the bar swaps to a row of your five pen colours — one tap recolours the object instantly, ✕ returns to the normal actions, and + opens the full colour picker (palette grid, colour wheel, eyedropper) for anything else.
  • Selection overview while moving: dragging a selection now leaves a faint "ghost" of the object in its starting position so you can see exactly where it came from, and the quick-edit bar (colour / angle / duplicate / delete) follows the object as it moves instead of hovering over the old spot.
  • Canvas panning no longer deselects: with an object selected, swiping the canvas with your finger now scrolls/pans the page and the selection rides along — it stays selected until you tap (not swipe) somewhere else, which finalises the move. Objects are still fully movable by finger or pen by dragging inside the selection box.
  • Deselecting is one clean tap: with anything selected, a stylus tap anywhere outside the object just dismisses the selection. It no longer starts a new stroke in the same gesture — which could lasso-grab the stroke under your pen or anchor a new shape where you only meant to deselect.
  • Stroke sizes stay put when you rotate: rotating portrait → landscape used to stretch every stroke ~2× thicker on screen (ink scaled with the page width while the pen's own thickness didn't, so new strokes no longer matched existing ones). Stroke widths are now a fixed pen size — only positions follow the page, so your ink keeps its exact thickness across rotations and new strokes always match old ones.

v2026.8.4

Choose a tag to compare

@VenkataLochanN VenkataLochanN released this 04 Aug 07:30
0ef1e5e

v2026.8.4

  • Fixed a bug where Exporting or Importing a backup closed the app's database forever — after Export, going back to the home screen crashed the app; after Import, the database stayed broken until a manual restart. Export now flushes the database through SQLite's WAL checkpoint without closing it, and Import properly reopens the restored database and relaunches the app automatically so everything is rebuilt from the restored data.
  • Fixed a bug where exporting a large page (PDF/PNG/ZIP) could fail cryptically: if rendering the page threw (e.g. an out-of-memory moment on a very large raster), the PDF page was left open, which made PdfRenderer.close() throw "Current page not closed" and masked the real error. Pages are now always released even when rendering fails, so the export either completes or reports the true error.
  • Fixed a small renderer resource leak: if a page render failed partway through (a bad PDF page, an out-of-memory moment, or an ink-drawing error), the bitmap borrowed from the reuse pool was never handed back, silently shrinking the pool until the next render reallocated a fresh one. A failed render now returns its bitmap to the pool before rethrowing, so the reuse pool stays intact across transient render errors.
  • Redesigned the Create New dialog with a Material 3 Expressive look. New Folder, New Notebook, and Import PDF each appear as a tinted, color-coded card (blue folder, purple notebook, red PDF) with icon, title, and description, a springy scale-in animation when the dialog opens, and a tactile press effect — the plain text-only list is gone.
  • The notebook title you type in the basic create dialog is now carried over to the Advanced Template dialog when you tap "Choose / Edit Template", so you don't have to retype it.
  • Shrunk the template preview in the basic create dialog so the dialog feels lighter and the title field gets more visual priority.
  • Fixed a crash in the Pages view: fast-scrolling the page grid and closing it could crash with "Document already closed" because thumbnail renders were still queued on the app-wide scope and ran against a closed PDF renderer. The grid now runs on its own dialog-scoped coroutine that is cancelled the moment the dialog closes, and the thumbnail renderer is closed-safe — an in-flight render simply gives up instead of touching the closed document.
  • Made the Pages view much faster on large PDFs. Thumbnails used to render one-at-a-time behind a single native renderer lock (a fast fling could queue dozens of renders waiting their turn). The renderer now keeps a small pool of independent renderers so several thumbnails draw in parallel, duplicate renders of the same page are skipped, and thumbnails for holders that scrolled off-screen are never wasted.
  • Thumbnail loading in the Pages view now follows the same engine design that makes the main PDF view fast: renders run on their own dedicated worker threads (instead of the app-wide IO pool fighting over one lock), a page that scrolls off-screen cancels its queued render so a fast fling only draws what you're looking at, and rendered bitmaps are reused from a small pool instead of allocating fresh memory for every thumbnail — so the grid fills in noticeably faster and scrolling through huge PDFs stays smooth.
  • Added a draggable scroll pill to the Pages view. Just like the one in the PDF view, it appears on the right edge of the page grid: drag it to glide through hundreds or thousands of pages, release to land exactly on the page you pointed at, and it fades away when you stop scrolling.
  • Fixed a memory leak in the zoomed-in view: quickly pinching, panning, or starting a scroll-pill drag could cancel a hi-res tile render partway through, and the page bitmaps it had already produced were never recycled — rapid zooming silently churned native memory. A cancelled render now recycles its finished tiles before the job stops.
  • Fixed a crash when working with several large inserted images at once: the image cache could evict (and recycle) a selected picture's bitmap while the selection was still drawing it, and the next redraw threw "trying to use a recycled bitmap". Selected pictures now survive cache evictions — a recycled bitmap is re-decoded on the spot instead of drawn.
  • Fixed opening PDFs from other apps (Open with… → Octopus Notes): the import could crash or leave an empty notebook when the file couldn't be read (e.g. a permission grant that expired between tapping and reading). Failed imports now show an error and roll back the half-created notebook.
  • Fixed heavy stutter when a page holds several large photos — inserting or lasso-selecting them used to decode each photo on the main thread, freezing frames for up to a second (and the frozen frames made the system skip touch events, spamming "Error processing scroll; pointer index for id 1 not found"). Photos are now decoded on a background thread, the selection appears instantly with frame outlines that fill in as pictures load, and two-finger events are no longer leaked to the list while a selection is being moved.