• Michael Drake
  • Vincent Sanders
  • Daniel Silverstone

Outstanding work (from December)

  • General
    • Implement any appropriate auto fill auth handlers IGNORING
    • Continue styling the generated query pages. (Michael)
    • Review TODOs.
  • Framebuffer
    • Language support for resources (Vince) SHITCANNED
    • Listing of compiled-in surfaces (Vince)
  • Internationalisation
    • Translations of all messages for the SSL/privacy internal query page.
    • Translations of all messages for the authentication internal query page.
    • Short of finding a native speaker there's not a lot we can do. Nothing
  • Text layout
    • Continue implementing. (Michael)
  • Release 3.10
    • Which means do the work first needed to complete it
    • And then do Debian package releases, including removing framebuffer from Debian.
  • Events
    • Michael to do more UI event support in NetSurf SHITCANNED

Pathway to 3.10

  • Completion of MVP for page info core window (Michael to work on this)
  • DER exfiltration and SSL Certificate viewer about:certificate (Vince)
  • Completion of integration of that into GTK and RISC OS frontends, with others being given at least two weeks to integrate before they cease blocking. (Assigned to Vince)
  • At least some attention given to GTK focus issues (Daniel to complete this)
  • Review styling for internal pages. (Assigned to Michael)
  • Listing compiled-in surfaces for nsfb (Assigned to Daniel)
  • NetSurf Mantis Bug#2650 Inappropriate error message (Assigned to Vincent)
  • NetSurf Mantis Bug#2722 GTK3 UI vertical scrollbar wrong (Assigned to Vincent)
  • NetSurf Mantis Bug#2721 Bizarre corners on download box in highdpi (Assigned to Michael)

Bug Triage


  • We need a discussion about framebuffer, but won't block 3.10 mostly
  • See if we can exfiltrate better SSL session error information such as a lack of cipher list overlap. NetSurf Mantis Bug#2719 (Assigned to Daniel)


Mostly individual activity here


  • Converted NetSurf's README to Markdown.
  • Removed unused minimum GIF delay setting from:
    • All the front ends that had settings code for the option: (RISC OS, Amiga, GTK, Atari, Windows).
    • Core options handling and tests.
    • Settings documnetation.
  • Various constifications of parameters though APIs:
    • The bw in browser window URL access function.
    • The core window in the core window callback table's getters.
    • The treeview clip rectangle through redraw.
    • The bw though the browser_window page_info getter.
  • Check for success/failure on HTML script mimetype interning.
  • Split out a helper to get colour lightness in plot_style.
  • Added function to engorge a particular component channel in a colour.
  • Added stubs for new browser window interfaces for page-info functionality.
  • Added new page info core window.
    • Handles correct scaling of everything (text, paddings, etc) for different DPIs.
    • Handles light on dark, or dark on light colour configurations.
    • Implemented content layout, redraw and mouse action.
  • Initialise/finalise the page-info module in NetSurf startup/quit handling.
  • Renamed "crtvrfy" to "pi" (for page-info) in the GTK front end.
  • Found a bug in the Amiga m86k toolchain where the compiler generates assembly that the assembler says is invalid.
    • For now, since we can't build the Amiga m86k toolchain, we have just disabled that entry in the CI build matrix.
  • Added -ldl link flag for unit test build of
  • Addressed missing malloc check in hashmap from Rob's code review.
  • Added treeview API for setting a search string in searchable treeviews.
  • Added cookie manager API for setting search string.
  • Made the browser window cookie opener set the search term to the current URL's host.
  • Fixed six scan-build issues in libcss.


  • Went through NetSurf Mantis Bug#2702 worked out that we weren't completing the content state machine when async scripts completed after dom_to_box had finished. Fixed that.
  • Went through NetSurf Mantis Bug#2736 and fixed the tests to use __func__ instead.
  • Updated the SDK for iconv and curl versions
  • GTK3 - local history focussing and other core windows
  • Fixed async scripts not completing the content state machine properly
  • Don't progress the content state machine if scripts dont' run anything
  • Ignore content loading status in html_proceed_to_done
  • Added DOMImplementation::createHtmlDocument()
  • Added Element::innerHTML support
  • Added Element::attributes and thus a rudimentary NamedNodeMap and proxies
  • Fixed infinity to Infinity in exports in Window
  • Added FOREGROUND browser window creation flag to be honoured in frontends which use tabs and can open things in the background at user choice
    • Added support for that in GTK frontend
  • Added FOCUS_LOCATION browser window creation flag which frontends can use to indicate that they want the location bar focussed when the window opens
    • Added support to GTK frontend to use that
    • Added a state machine for the focussing logic in GTK
  • Corrected browser_window to inform the GUI when redirects occur and to ensure that the final URL reported to the GUI is the final fetched URL not the fetch parameters URL
    • Removed hack in GTK for url bar refresh on throbber stop as a result
  • Various GTK3 type updates (e.g. GtkVBox and GtkHBox to GtkBox)
  • Increased information available from when a window is alive after being asked to destroy itself
    • Also increased timeout in monkey_driver for that so that tests pass once more
  • In the GTK frontend, drain GTK events before polling the scheduler to allow windows a chance to realise before we render. This improves the local history thumbnails and scrollbar size
    • To complete the scrollbar fix, also send a resize event to the grid when we complete a fetch so that the scrollbar will rerender its thumb properly
  • Correct Node::nodeValue setter to return the value set into it
  • made llcache persist anything useful during finalise
  • Added generic hashmap type
    • Reworked the fs_backing_store to use this hashmap to reduce memory impact at startup and simplify the code a bit.
    • Added an SSL certificate chain cache to the curl fetcher using the hashmap
  • Corrected ring handling in about, resource, file, and data fetchers
  • Made fetch core send a FETCH_ERROR of FetchFailedToFinish if a fetch is freed without actually passing through one of the finish states
  • Added surface enumeration to libnsfb
    • Added support to use that to nsfb
  • Fixed NetSurf Mantis Bug#2650 by making windows port not use NoMemory where inappropriate.
  • Added disc cache path as a core option and made monkey able to use it


  • Various code cleanups
  • Reworked our entire certificate handling framework to use DER rather than our cert_info structures

Browsing Cache

Running the long-internet test with disk cache on and javascript off, the disc cache ended up with:

  • 1 dblk 82 ish entries in there
  • 1 mblk
  • 227 m files ranging in size from just over 8k to just under 10k
  • 913 d files

Daniel put a copy in his homedir on ci.

Statement of work

If at all possible, we'd like to see some of the following addressed before the next developer weekend…

Next time

  • May 22nd to 26th (Fri through Tuesday)
  • Remote / video conf / IRC.