359 lines
17 KiB
Text
359 lines
17 KiB
Text
|
# Todo
|
||
|
|
||
|
## Git
|
||
|
* Set up issue tracking for this fork, if possible (and move the TODO list)
|
||
|
|
||
|
## Features
|
||
|
* Log viewer needs to have BBCode/HTML/Text copy modes
|
||
|
* Turn @ and # links on/off?
|
||
|
* Show true bans? COMPRESS QUIT MESSAGES ON BAN
|
||
|
* Colour saving boxes things?
|
||
|
* Whowas for last seen online?
|
||
|
* Tab completion of two letter names
|
||
|
* Auto download/install updates via Windows installer
|
||
|
* Make toast notifications only on certain chums
|
||
|
* Local alisas for chums
|
||
|
* Don't make new windows be all in your face and shit
|
||
|
* Hide offline friends per group
|
||
|
|
||
|
* LET PEOPLE TURN OFF HONKING - people already rename the soundfile and such to
|
||
|
do this manually
|
||
|
|
||
|
* Add support for displaying more verbose information (e.g. Cease messages which
|
||
|
tell you more than the abbreviation of who left)
|
||
|
* Make Pesterchum recognize conventional /mes so they aren't invisible
|
||
|
* Make @XY and @xxxYyy formats ping their targets
|
||
|
* Allow matches like @?XY and @FXY or @PXY3 - make them only match the target
|
||
|
currently set to that.
|
||
|
* Make @ notation not match @u@; and similar (make invalid nick chars break
|
||
|
matches)
|
||
|
* Allow use of @ and # links to switch between logs in log viewer (start with
|
||
|
the closest time to the line of the log that's linking)
|
||
|
* Improve log viewer in general (unbind instances from specific users/memos)
|
||
|
* Fix hyperlink escaping (Qt seems to do this automatically - need a workaround)
|
||
|
* Show bans if +h or higher (+h, +o, +a, +q)
|
||
|
* Auto-invite (for people on the friends list?)
|
||
|
* Right click on names for inviting, ACTUALLY banning, PMing, ... See also:
|
||
|
Things proper IRC clients can do. (Set basic mode stuff up first, get the
|
||
|
infrastructure in place.)
|
||
|
|
||
|
* Add more comprehensive status support - IDLE, DND, INVISIBLE for now - or at
|
||
|
least add similar functionality.
|
||
|
* Improve Pesterchum's tracking of disconnections (check memos for quits...)
|
||
|
* SEPARATE FUNCTIONALITY from CONNECTED STATE!! This is a huge problem! Being
|
||
|
shunted off our nick closes windows and breaks things! Just D/C and
|
||
|
reconnect?
|
||
|
* It'd probably be best to give an option to either CHANGE NICKS or
|
||
|
DISCONNECT upon nick collision...? But, then how would we GHOST?
|
||
|
* Auto-disconnect if collision before joining channels, make it
|
||
|
possible to disconnect (but not send messages, obviously)
|
||
|
without losing everything
|
||
|
* Maybe GHOSTing should use auto-identify to ensure- no, that doesn't
|
||
|
work, because we can't ident into a specified nick without being ON
|
||
|
it. Need GD's help to fix....
|
||
|
|
||
|
* Make it possible to test quirk things and such without connecting? This'd be
|
||
|
hard to separate out, but useful.
|
||
|
* Make a quirk 'bin' that exists independent of profiles, and can be
|
||
|
copied to/from at will.
|
||
|
* Allow us to set quirks that apply to all profiles! For things like
|
||
|
replacement quirks.
|
||
|
|
||
|
* Right-click Time entry field to see those used? (Replace left/right buttons?)
|
||
|
* Save commonly-used times on a per-handle basis!
|
||
|
* Make the memo list highlight/recolor the names of channels you're in
|
||
|
(including secret ones)
|
||
|
* Add an option to Cycle (for log separation)
|
||
|
|
||
|
* Add a separate 'Tweaks' section in Options
|
||
|
* Fix graphical issues with dark themes vs. light themes (Qt/text too
|
||
|
light/etc.)
|
||
|
|
||
|
### Services
|
||
|
* Use web connection to send offline messages in email-like fashion
|
||
|
(Idea: ghostDunk)
|
||
|
* Better NickServ registering
|
||
|
* Implement **MemoServ** support
|
||
|
* Tell user when NickServ handles are going to expire
|
||
|
* Tell user when old handles have D/C'd? Offer autoghost support?!
|
||
|
|
||
|
### GUI
|
||
|
* Refactor code to make way for QShortcut usage. (Unify shortcut processing?)
|
||
|
* Enable/Disable toggle (Firefox style option sheet-esque? Seems okay.)
|
||
|
* Ctrl+W closes tab
|
||
|
* Ctrl+Shift+PGUP/PGDN moves tab
|
||
|
* Option to disable Ctrl+Tab's jump to newest
|
||
|
* Ctrl+Shift+V "Mass Paste" option (parse lines in sequence)?
|
||
|
* Make mouseovers (refocusing) reset idle timer (disableable)
|
||
|
* Set up EVENT FILTERS in windows to redirect events to the right places
|
||
|
* Make the context key (if used in the text area) append the menu options
|
||
|
from the right-click menu
|
||
|
* Make system messages use timestamps like everything else
|
||
|
* Offer option for timestamps in memos
|
||
|
* Make a status window/popup to contain logs of information like invites
|
||
|
|
||
|
### "Security"
|
||
|
**Note: The idea of security on this platform is pretty much laughable. Most of
|
||
|
these changes are simply bandages being placed over fundamentally flawed
|
||
|
design.**
|
||
|
|
||
|
If you want Pesterchum to be more secure, either get ghostDunk to make changes
|
||
|
to the server and its administration policies, or get everyone to switch to this
|
||
|
version of the client. There aren't really any other options.
|
||
|
|
||
|
* Flood protection (don't send because of the same target too many times in a
|
||
|
row)
|
||
|
* Just requires a timer + lastmessage date check.
|
||
|
* Lock exploitable functionality to those on your friends list (optional)
|
||
|
* Canon handles are excluded from this concern, but subject to flood
|
||
|
controls regardless.
|
||
|
* A measure of politeness is reasonable here - checking if a friend is on
|
||
|
as a different handle should be okay, once IRC access is revamped.
|
||
|
* Don't send MOOD answers to those not friended
|
||
|
* Ignore pesters from those not on your friends list (optional)
|
||
|
* Ignore pesters from those not sharing a memo? (optional)
|
||
|
* Make BLOCKED list persistent, if it isn't already
|
||
|
* Offer option to block hosts, not just handles...
|
||
|
* Explain to the user that this option is very dangerous.
|
||
|
|
||
|
### Advanced
|
||
|
* Offer option for 'new' syntax adjustments
|
||
|
* Replace: "???, ???, ??? ceased responding to memo." for parts.
|
||
|
* "XY ({handle}) ({times}) ceased responding to memo."
|
||
|
* If +h or above: Include host as well as handle.
|
||
|
* Replace: "??? ceased responding to memo." for nickchanges.
|
||
|
* "XY ({handle} {host?}) left memo; AB ({handle} joined memo."
|
||
|
* Can violate the norms somewhat, these aren't theme-controlled.
|
||
|
They're basically for power users/admins.
|
||
|
* Offer GUI changes
|
||
|
* Make tabs "{name} ({# of unread msgs})" if unread
|
||
|
* Make themes able to define colors that are too dark to read for an
|
||
|
individual window
|
||
|
* Set up code for 'nudging' color codes into readable territory; presumably
|
||
|
via an adjustable setting. (This CANNOT affect logs - just the log
|
||
|
reader.)
|
||
|
* Come up with a solution for duplicate times/handle abbreviations
|
||
|
* Maybe make mouseover for the handles display the full handle?
|
||
|
|
||
|
* Option to disable backwards compatibility:
|
||
|
* For those that are *really* sure that this build is the build for
|
||
|
them.
|
||
|
* Should enable extra features, including ctag compression.
|
||
|
* Allow manual compression changes via memo right-click menu for
|
||
|
'advanced' (per the setting) users
|
||
|
|
||
|
## Todo/Done
|
||
|
**Everything in this section has already been completed.**
|
||
|
|
||
|
### GUI
|
||
|
* Toggle individual tab flash / alert sounds (from the same right-click memo
|
||
|
that lets us toggle OOC)
|
||
|
* Make CTRL+PGUP/PGDN switch memo/pester tabs
|
||
|
* Make Ctrl+J/K usable for tab changing
|
||
|
* Make right-clicking on a tab open up the right-click menu one would get on
|
||
|
right-clicking the title (frame??)
|
||
|
* Right-click in userlist offers option to Pester
|
||
|
* Make certain dialogues start on the safer of the two options
|
||
|
* Make the Reconnect dialog start on Reconnect
|
||
|
* Make the Rejoin dialog start on Rejoin
|
||
|
* Make the Invite dialog start on Decline
|
||
|
|
||
|
### Usability
|
||
|
* Fix parser text-loss bug that plagues everyone (especially Chumdroid users)
|
||
|
* Make /me messages that cut continue into more /me messages
|
||
|
* Make sound work on Windows through QSound (disables volume control)
|
||
|
* Color tags are now posted as their shorter hexadecimal forms, if applicable
|
||
|
(255,255,255 -> #FFFFFF, for example)
|
||
|
* Separate auto-idle and checkbox idle so they don't share a state (and make
|
||
|
the first send set the timer for additional idle responses)
|
||
|
* Stop us from sending IDLE messages to NickServ
|
||
|
* Fix NickServ auto-login things
|
||
|
* Make a window that can be used to interface with the script directly - a
|
||
|
simple Python console
|
||
|
* Make the memo name entry box accept a comma-separated list
|
||
|
* Make console users able to check widget theme/style information via mouseover
|
||
|
and key combo (for people making themes or debugging)
|
||
|
* This is presently Ctrl+Alt+w, after opening the console (Ctrl+~).
|
||
|
|
||
|
### Backend
|
||
|
* Perpetual code cleanup, refactoring, simplification and general improvements
|
||
|
* Syntax changes/updates and the like
|
||
|
|
||
|
## Code
|
||
|
**Improvements and changes pertaining to Pesterchum's internals.**
|
||
|
|
||
|
### General
|
||
|
* Implement new Lexer for the sake of everyone's sanity
|
||
|
* This is half-done - rendering still uses the old lexer
|
||
|
* Redo `PESTERCHUM:` processing/redo whole msg received processing chain
|
||
|
* Redo text processing in general
|
||
|
* Redo quirk processing (use pieces from Textsub if needed)
|
||
|
* Pare down the PesterMemo object so it inherits more things from PesterConvo
|
||
|
*implicitly*
|
||
|
* SOONER OR LATER: Redo internal chum storage, centralize data into widely
|
||
|
accessible manager objects, etc.
|
||
|
* Also: Overhaul settings storage. Bring it more in line with the system Textsub
|
||
|
used (if feeling masochistic), but simpler.
|
||
|
* **Overhaul information storage** - chums, conversations, memos; all should be
|
||
|
handled by a backend and merely RENDERED into Qt objects!!
|
||
|
* Overhaul debugging
|
||
|
* Give an actual (small) window with traceback that can be sent to dev(s)
|
||
|
* Use the console for this?
|
||
|
* Debug generic.py's CaseInsensitiveDict/replace it with mine
|
||
|
* Overhaul messaging so **Chan/Nick/Memo Servs** all use the same code (and
|
||
|
lexer)
|
||
|
* **Separate Pesterchum system handling from window handling.** Dicts should be
|
||
|
stored and maintained via dicts - even a refined version of what I used for
|
||
|
textsub.
|
||
|
* Doing it this way means I can fix the case in/sensitivity issue, too.
|
||
|
* Set up framework for easily logging/accessing channels, users, etc...like
|
||
|
what hexchat has.
|
||
|
* More efficient framework for accessing stored user information - right now,
|
||
|
Pesterchum keeps information on user colors and such on hand *forever*,
|
||
|
meaning that things inevitably get clogged up with handles that are never
|
||
|
really seen, or only seen once, or even just randomly generated. This is
|
||
|
silly and should be changed; I'll probably make a namedtuple for users or
|
||
|
something, and save it all to a separate JSON file or two.
|
||
|
Said JSON file should keep the extra information on hand - or rather, the
|
||
|
'recent users' JSON file should keep most of the detailed information and be
|
||
|
accessed first, with the larger 'inactive users' file being accessed to
|
||
|
check for unfamiliar handles.
|
||
|
These would have to output the old data to pesterchum.js for backwards
|
||
|
compatibility purposes.
|
||
|
* Finish creating the sound wrapper. Just make it check what the type of sound
|
||
|
needed is upon creation, and instantiate a private class based off of that.
|
||
|
* There is basically no good way to do this without moving to Qt5. I
|
||
|
might try that myself later, but that's a long-term goal.
|
||
|
* Stop from sending TIME notifications when unable
|
||
|
* Until then: Hide resulting "no external messages"/+m messages.
|
||
|
* Stop sending auto-IDLE messages unless the chat has been updated since the
|
||
|
last one.
|
||
|
* Make groups, chums, etc. preferentially load from the main directory, *then*
|
||
|
check logs.
|
||
|
* Compatibility is important, so update both if they exist. (Bluh!)
|
||
|
|
||
|
### Debugging
|
||
|
* Set up a simple function to display a traceback instead of silently moving on!
|
||
|
* Use the console for this?
|
||
|
* Make small, simplistic windows that allow the viewing of internal variables
|
||
|
pertaining to things like set quirks, users present, etc.
|
||
|
* Also let it display the stylesheet settings of the current window, or
|
||
|
similar.
|
||
|
* Make a console to display debug info without requiring us to run from terminal
|
||
|
* Allow us to specify flags via command line
|
||
|
* Let us specify a separate config (pesterchum.js) file!!
|
||
|
* Make the console support color (not ctags, more stylesheet stuff) (need
|
||
|
parser work for this)
|
||
|
|
||
|
## Bugs
|
||
|
* weird memo time bug
|
||
|
* Windows doesn't show style sheet sometimes?? Maybe related to themes.
|
||
|
* Issues with connecting? Client not closing connection right? People keep
|
||
|
getting "nick taken" messages
|
||
|
* When using mood sort, scroll position jumps to last selected chum
|
||
|
* Closing a timeclone doesn't actually cease for everyone else
|
||
|
* Kill Zalgo
|
||
|
* Random invisible, tiny links to last link at end of every message
|
||
|
* Chums not appearing on chumroll when initals are the same? (bS)
|
||
|
* Recognize IRC 471, 473, 474 and 475
|
||
|
* memo links aren't case sensitive
|
||
|
|
||
|
* Mentions occasionally don't work (e.g. in /me)
|
||
|
* Character times aren't 'forgotten' on Part
|
||
|
* +c is not properly recognized on join, nor does it stop someone from
|
||
|
reenabling their quirk (let ops and above ignore it?)
|
||
|
* Chumlist handles groups pretty badly (no using the same name as a handle, for
|
||
|
example? Needs an errormessage at least)
|
||
|
* The whole chumlist handling system really ought to be refactored into
|
||
|
something sane...the objects should only be there to render
|
||
|
* PESTERCHUM: messages are sent to things like NickServ
|
||
|
* Log folder/file names are not case-sensitive, so they break on non-Windows
|
||
|
systems
|
||
|
* Log viewer needs adjustments and sanity checking for log directories
|
||
|
* Capitalized /me's don't render (should forcibly lowercase them)
|
||
|
* 'pcd10' and similar users don't get proper abbreviations on part (ugh)
|
||
|
|
||
|
* Volume control doesn't work without pygame
|
||
|
* Sound on Linux doesn't work without pygame
|
||
|
* Update checking code gives false positives (update to use json file from git?)
|
||
|
* Pesterchum doesn't seem to close all of its file handles - it runs out of
|
||
|
handles to use on Linux
|
||
|
* Others have reported memory leak-induced crashes on Windows. These
|
||
|
may or may not be related.
|
||
|
* Pesterchum groups aren't carried over when profiles are copied!
|
||
|
* Malformed Pesterchum profiles cause the program to crash and burn
|
||
|
* What causes these? Exiting in the middle of a write operation? Threading
|
||
|
issues?
|
||
|
* Malformed Python quirks try to open an error dialog and crash if Pesterchum
|
||
|
is opened as a module
|
||
|
* Pesterchum's threading is messy and scary, and should probably be cleaned up
|
||
|
some via the addition of locks
|
||
|
* Pesterchum's file handling is atrocious - inefficient to the extreme.
|
||
|
* There are multiple copies of things that really need only be loaded once
|
||
|
in a lot of different places.
|
||
|
* Memos don't seem to close their file handles properly. (Logs too??)
|
||
|
|
||
|
## Windows Bugs
|
||
|
* XP SP2: sometimes mouse clicks dont register? must be some kinda crash
|
||
|
* On reconnect and nick change, momentary theme change causes menu items to
|
||
|
stop working
|
||
|
* Random chums won't show up on chumroll
|
||
|
* Popup toast notifications cause main window to raise
|
||
|
|
||
|
## Mac Bugs
|
||
|
**Due to my lack of access to a Mac, these are unlikely to be fixed.**
|
||
|
* Mac doesn't show tabs right, display gifs, highlighting thing?
|
||
|
* SS: also the background image is broken
|
||
|
* SS: in the one-on-one pester it resizes with the window
|
||
|
* SS: but the memo one doesn't resize
|
||
|
* SS: and the arrows next to the time thing overlap the CLOSE button
|
||
|
* Lex: There seems to be a faint outline around most non-square themes.
|
||
|
|
||
|
|
||
|
## Things that won't be done
|
||
|
**Requests that, for one reason or another, will not be fulfilled.**
|
||
|
|
||
|
### Scrapped Features
|
||
|
**I'll explain why these ones won't happen.**
|
||
|
|
||
|
> * More complex quirks: by-sound
|
||
|
|
||
|
* This would require a way to determine what maps to a sound, and
|
||
|
replace it.
|
||
|
I've played with the idea before. It resulted in me needing to look
|
||
|
up things like the [Metaphone Algorithm][metaphone] to figure out
|
||
|
how it might be even remotely possible. The results were NOT a fun
|
||
|
time; if this is ever implemented, it will be much, much later than
|
||
|
just about everything else.
|
||
|
[metaphone]: https://en.wikipedia.org/wiki/Metaphone
|
||
|
|
||
|
> * Spy mode
|
||
|
|
||
|
* I feel as though I shouldn't need to tell anyone why this is a bad idea.
|
||
|
Some people already have this capability anyway; I used to be one of them.
|
||
|
There's no real need to implement an inferior version into every single
|
||
|
client on Pesterchum.
|
||
|
|
||
|
> * "Someone has friended you" notifier
|
||
|
> * Spectation notices (Idea: lexicalNuance) (probly WONTFIX)
|
||
|
|
||
|
* These are milder invasions of privacy than the above, but they are still
|
||
|
invasions of privacy.
|
||
|
|
||
|
> * When 'banned' make impossible to connect using timestamp banned under
|
||
|
|
||
|
* This is a lot of work for something that purely affects immersion - while
|
||
|
also breaking a number of things in the process. Too much work for too
|
||
|
little payoff.
|
||
|
|
||
|
> * Use web connection to save profiles (Idea: ghostDunk)
|
||
|
|
||
|
* There is no way to do this now that Pesterchum is basically unsupported; an
|
||
|
external server would be necessary for storage.
|
||
|
As such, you'll just have to settle for copying your profiles and logs when
|
||
|
you change computers.
|
||
|
|
||
|
|
||
|
|
||
|
[modeline]: vim:set autoindent ts=4 sts=4 sw=4 tw=79 expandtab:
|