Shop OBEX P1 Docs P2 Docs Learn Events
Forum update progress report - Page 4 — Parallax Forums

Forum update progress report



  • kwinnkwinn Posts: 8,697

    Do we really want the poster info bar translucent so the post text is overlayed as in the attached picture.

  • VonSzarvasVonSzarvas Posts: 3,335
    edited 2021-12-13 12:31

    Trying to cover all the feedback with this refresh.

    Some things in progress:

    1. line spacing in the editor box
    2. overall could be darker (can't suit everyone, so looking into a user preference button for dark vs light theme)
    3. uploading images current not working Fixed
    4. social icons and emoicons too small :)
    5. 😫
    6. comments pane could be wider on larger displays.
    7. user icons could get darker background so white-icons show better.
    8. add woff Parallax font
    9. add FAQ / tooltip on new editor
    10. certain signatures are not compatible with forum update
    11. attempt to prevent the cursor jump in editor / fix the system slowdown
    12. increase editor buffer to prevent browser waits with large messages.
    13. add some CSS tweaks shared in this thread.
    14. allow spin/svg files to be attached.
    15. avatars in mobile view
    16. postnum adjustments
    17. add spin and spin2 code highlighting (contributed by W21)
    18. shade the announcements in the recents page, so the first post is obvious.
    19. add the top-title bar with useful buttons (Sign-Out, Parallax shop, Learn, .... and maybe repeat the socials up there too.)
    20. fix up the stale links to old forum urls in posts
    21. add refresh after "mark all read"
    22. re-instate new search feature (pending dependencies update)
    23. Adding a contrast border behind the avatars would show light avatars well on the light theme.
    24. mobile view preview/post buttons position
    25. preview in the "INBOX" editor
    26. add "Code" block insertion button (helper button to insert the code wrapping backticks)
    27. Enable username link highlighting in markdown, example @VonSzarvas
    28. code blocks default to monospaced font, and with code-type option to specify spin, basic, c, js, etc...
    29. Ensure code blocks are not parsing anything inside, such as formula or things with asterisks! (should be like that already).

  • Looking great! Thanks for the updates. I feel much better with the return of my favored "Mark All Viewed" button :D

  • Aaand we're back.

    • Looks decently nice
    • Editor is WYSIWYG again
    • Text contrast is a bit low
    • Images are there, but all washed out. Actual files are fine, but I can't find the property that causes it

  • Hello!

    Will the real Paralax Forum please standup? Now it shows up on my Chrome screen with everything on the left hand side. Also I am not all convinced that this editor works. It seems to be an ordinary text box rather than a true editor.


    Mascot back, but is on strike.

  • AAAA I figured it out!

    This fixes the washing-out of everything:

    .Frame-body {
        opacity: 1;

    IDK why this has non-1 opacity to begin with.

    Also, typing code into the rich editor is super duper ultra broken, keeps resetting the cursor to the beginning

  • Wuerfel_21Wuerfel_21 Posts: 4,676
    edited 2021-01-25 14:35

    Tables in the old post are still there (and still have broken CSS), but does the rich editor do them?

    | A | B | C| D | E|


    | something |  |  |  |  |

    |  | or |  |  |  |

    |  |  | rather |  |  |

    |  | idk |  |  |  |

    | tables | r |cool | right | ?|

    yeah, no

  • VonSzarvasVonSzarvas Posts: 3,335
    edited 2021-01-25 14:42

    These are the supported tags at the moment :

  • '' Voice architecture:                                        Parameters: (10 bytes)
    ''                           ┌─────┐                          - volume              0..255
    '' ┌──────┐  ┌───┐           │ Env │                          - panorama            0..127
    '' │ Osc2 ├──┤├─┬────┐    └──┬──┘      pl                  - semitone osc1       0..255
    '' └──────┘  └───┘ │        ┌──┴──┐    ┌── L DAC          - semitone osc2       0..255
    ''         pm┌──├─┘   (+)──┤ DCA ├─┬──┤                     - detune osc2         0..255
    '' ┌──────┐    ┌───┐       └─────┘ │  └── R DAC          - PhaseMod intensity  7..0
    '' │ Osc1 ├(+)─┤├───┴─┐pm      │    pr                  - Feedback intensity  7..0
    '' └──────┘    └───┘               │                        - Envelope Attack     0..255
    ''           └─────├─────(+)──────┘                        - Envelope Decay&Release  0..255
    ''                 fb                                         - Envelope Sustain    0..255
    ''Legend:  = SawtoothTriangle Shaper, (+) = Mixer,  ├ = 2^n Attenuator (shifts)
    '' Osc = Sawtooth Oscillator  (DDS)
    '' Env = Envelope Generator (A D/R S)
    '' DCA = Digital Attenuator (mult 8*32)

    Code block test...

    • still passes PUA chars fine
    • syntax highlighting again, still bad language autodetection, still no manual override
    • font's back to default
  • Wuerfel_21Wuerfel_21 Posts: 4,676
    edited 2021-01-25 15:49

    RE: code blocks

    Looking into it, I think it wouldn't be too difficult to write Spin/Spin2 definitions for highlight.js. Since Spin is kinda odd, I think the autodetection would identify it fairly reliably. I'll try my hand, I guess

  • Font- I've not added that yet, but will do that @Wuerfel_21 . Your diagram looks great !


    This is one of those "rock and hard place" situations. The old editors don't work well (at all) with this new Vanilla version, and this new "Rich" editor seems like the only one Vanilla are supporting moving forward.

    The plan is to use all standard features in this forum, so that we can keep it up-to-date moving forward.

    So far this update achieves that, using a stock template and only a few CSS overrides.

    We are now on Vanilla 3.3. Version 4.0 is due for release in Q1, and that will bring a huge number of improvements since the 3.3 release (which was over a year ago).

    Tables and other markdown extras aside (which I don't think were available in the previous editor either?).... we have to use what's available for now, knowing the path to progress is available again, now that we took the leap off the ancient bunch of code and plugins that no-one dared update for so many years.

    Moving forward....

    It seems to me the main thing that is annoying with this new text editor is that inside code blocks, the cursor jumps around after a pause in typing. In the short term I suppose we could all use copy/paste to enter code.

    And if we are keeping this editor, I'd probably patch/fix the jumping cursor issue anyway. Plus add an instruction tooltip and/or FAQ link which shows how to enter code in this new editor box. We have the feature to add "FAQ" and information pages now. Another bonus!

    BTW... someone asked about the P1/P2 graphic. That will be for some Parallax images/information/ads, so it's a placeholder for now.

    The Search feature has a few options added too, which hopefully will improve that experience!

  • VonSzarvasVonSzarvas Posts: 3,335
    edited 2021-01-25 15:52

    Yes please! If you can write it, I'll make sure it's added.

    Whilst experimenting, the vb parser seemed reasonable, but just not quite 100% 🤪

  • Black, with blue, "yeah, you clicked it" works better. Thanks. The blue links were a trigger. Now the "new" badge seems to make more sense.

  • dgatelydgately Posts: 1,629
    edited 2021-01-25 18:22

    Just a test (my prior posts all claim an error: " There was an error rendering this rich post.")... This one does, as well (arg!)


    • Yet again, the "Preview" button is missing... I guess wizzywig is the default, but code editing is still awkward with extra spaces at the bottom, jumpy cursor, weird results deleting characters.
    • Would like the full menu of edit options or a link to Rich Editor options (a pop-up of options?)
    pub main |x,y
        x := y++


  • So things are improving a lot, however one thing went backwards this morning, it got narrower again. You went the wrong way, it was super narrow, you got it to like 75% of where it should be, but today it went back to around 60% width. Please make it fill the full width of the window.

  • dgatelydgately Posts: 1,629
    edited 2021-01-25 18:25

    Yet another test, posting from Google Chrome as opposed to posting from Safari...

    Will this result in another 'rich post' error? It does!

    Posting from a macOS system (Safari & Google Chrome) appears to result in " There was an error rendering this rich post."...

  • Ah, macOS could be a thing. I'll get hold of a mac and see what looks different. Maybe some encoding mismatch.

  • Wuerfel_21Wuerfel_21 Posts: 4,676
    edited 2021-01-25 19:47

    I think the error under each of @dgately 's posts is actually from rendering his signature.

    Anyways, here's the first version of the Spin plugin for highlight.js. This should be called "spin.js" and be loaded in... Somewhere... I guess... After highlight.js but before the code that initializes it? I'm not exactly a javascript buff. Currently Spin1 only (and will actively reject code that it knows is Spin2. This will help with detection when the Spin2 support is in.)

    Language: Spin
    Author: Ada Gottensträter
    Description: language definition for Spin files
    Category: config
    "use strict";
        const COMMENT_MODE = hljs.COMMENT('\'', '$');
        const DOCCOMMENT_MODE = hljs.COMMENT('\'\'', '$');
        const BLOCKCOMMENT_MODE = hljs.COMMENT('{', '}');
        const BLOCKDOCCOMMENT_MODE = hljs.COMMENT('{{', '}}');
        const BLOCKTYPES = 'con obj var pub pri dat ';
        const WIDTHS = 'byte word long '; 
        const SPIN_KEYWORDS = 'if ifnot else elseif elseifnot repeat from to step while until case return abort result '; // Keywords valid in Spin code (PUB/PRI blocks)
        const PASM_KEYWORDS =   'wc wz wr nr org res fit '+
                                'if_a if_ae if_always if_b if_be if_c if_c_and_nz if_c_and_z if_c_eq_z if_c_ne_z if_c_or_nz if_c_or_z if_e '+
                                'if_nc if_nc_and_nz if_nc_and_z if_nc_or_nz if_nc_or_z if_ne if_never if_nz if_nz if_nz_and_c if_nz_and_nc if_nz_or_c if_nz_or_nc '+
                                'if_z if_z_and_c if_z_and_nc if_z_eq_c if_z_ne_c if_z_or_c if_z_or_nc ';
        const GENERIC_BUILTINS = 'float trunc round and or not '; // builtins valid everywhere
        const SPIN_BUILTINS = ' bytefill wordfill longfill bytemove wordmove longmove strsize strcomp waitcnt waitpeq waitpne waitvid cogid coginit cognew cogstop lockclr locknew lockret lockset clkfreq clkmode '; // Spin builtin functions
        const SPIN_BUILTINS_SPECIAL = 'constant string '; // special builtins
        const LITERALS = 'true false posx negx xtal1 xtal2 xtal3 xinput rcfast rcslow pll1x pll2x pll4x pll8x pll16x ';
        const P1_REGISTERS = 'par cnt ina inb outa outb dira dirb ctra ctrb frqa frqb phsa phsb vcfg vscl '; // Registers for P8X32A
        const P1_MNEMONICS =    'abs absneg add addabs adds addsx addx and andn call clkset cmp cmps cmpsub cmpsx cmpx cogid coginit cogstop djnz hubop jmp jmpret '+
                                'lockclr locknew lockret lockset max maxs min mins mov movd movi movs muxc muxnc muxz muxnz neg negc negnc negz negnz nop or '+
                                'rcl rcr rdbyte rdword rdlong ret rev rol ror sar shl shr sub subabs subs subsx subx sumc sumnc sumz sumnz test testn tjnz tjz '+
                                'waitcnt waitpeq waitpne waitvid wrbyte wrlong wrword xor ';
        const STRINGS = {
            className: 'string',
            begin: '"',
            end: '"'
        const PREPROCESSOR = {
            className: 'meta',
            begin: /^\s*#[a-z]+\b/,
            end: /$/,
            keywords: {
                    'if else elif endif define undef warning error line print region end ' +
                    'pragma ifdef ifndef elseifdef elseifndef include '
            contains: [
                    begin: /\\\n/,
                    relevance: 0
                hljs.inherit(STRINGS, {
                    className: 'meta-string'
                    className: 'meta-string',
                    begin: /<.*?>/,
                    end: /$/,
                    illegal: '\\n'
        const NUMBERS = {
            className: 'number',
            variants: [
                { // base 2
                    begin: /(?<!\w)\%[01_]+(?!\w)/
                { // base 4
                    begin: /(?<!\w)\%%[0123_]+(?!\w)/,
                    relevance: 10, // Rather unique spin-ism
                { // base 16
                    begin: /(?<!\w)\$[0-9A-Fa-f_]+(?!\w)/
                { // base 10
                    begin: /(?<!\w)[0-9_]+(?!\w)/
        const FUNCTIONS = {
            className: 'function',
            begin: /^\s*(pub|pri)\s+/i,
            end: /$/,
            keywords: BLOCKTYPES,
            contains: [
                    className: 'title',
                    begin: /(?<=^\s*(pub|pri)\s+)/i,
                    end: /(?!\w)/,
                    className: 'params',
                    begin: /(?<=^\s*(pub|pri)\s+\w+)\((?!\))/i, // Does not match Spin2-style "PUB name()" !!!
                    end: /\)/,
                    illegal: /[{}]/,
                    className: 'resultvar',
                    begin: /(?<=^\s*(pub|pri)\s+\w+(\(.+\))?\s*\:\s*)\w/i,
                    end: /($|\w(?![\w,]))/,
                    className: 'locals',
                    begin: /(?<=^\s*(pub|pri)\s+\w+(\(.+\))?\s*(:.*)?\|\s*)\w/i,
                    end: /($|\w(?![\w,]))/,
                    illegal: /(byte|word|long)/,
            illegal: /\(\)/,
            aliases: ["spin"],
            case_insensitive: true,
            keywords: { // Initial block is CON...
                literal: LITERALS,
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2021-01-25 19:52

    The prior post is yet another argument for restoring the vertical scrollbar to code blocks.


  • Wuerfel_21

    I think the error under each of @dgately 's posts is actually from rendering his signature.

    Yes... I can't edit my signature, though it states that my signature is 279 characters too long... And, I don't have any editable content in my signature... May take forum admin to fix that!

  • Yay! thank you VonSzarvas for fixing the narrow thing! It's beautiful now!

    Now my only strong wish is for a dark mode theme, but I think you mentioned that already.

  • And here's with Spin2 support. Had to switch to attaching it because Spin2 just has too many symbols.

    While we're at messing with the forum, can we please get rid of the file type limitation? It's very annoying and I don't think it does much good (especially since the spicy ones like EXE are allowed, anyways).

  • Test for when it's added in:


    _clkmode = xtal1 + pll16x
    _xinfreq = 5_000_000
    _stack   = 128
      pst: "Parallax Serial Terminal"
    PUB main
      repeat 20
        pst.str(string("Hello World!",13))


      APINS = 5 addpins 3
    PUB main() | n
    PRI do_stuff(n)
      wypin(APINS,n.word[0] SCA $FF00)
  • Is David not a man of many words or is something afoot?

  • Awesome job @Wuerfel_21

    I'll get the highlighting uploaded in the morning, and add some file suffixes too!

    Svg, spin, spin2, bin and eeprom should all be included.

Sign In or Register to comment.