fieldify js class inconsistencies fixed (visible with edge browser)
[brisk.git] / TODO.txt
1  TODO |
2 ------+
3
4   BUGS |
5  ------+
6    DONE - Not sequence of 3 same chars
7    DONE   . check server side with test
8    DONE - Global vars checker
9    <release>
10    - usermgmt: add user delete
11    DONE - 10002 message when already clicked
12    DONE - trim spaces in apprentice form
13    DONE - Remove books from chat
14    DONE - usermgmt: add email
15
16
17   FEATURES |
18  ----------+
19    WIP * inherited info
20    * Users Network construction
21      DONE - sql
22      DONE - dbase API
23      DONE - add apprentices tables
24      DONE - remove entry when set unknown
25      DONE - enhance info interface
26        DONE . SQL to show current evaluation
27        DONE . disable parts of interface
28        WIP . add title to items
29        . fix SELECT 
30      <release>
31      - minisplash at end of the match
32      - differentiate table authorization
33    * add new kind of isolation for apprentice
34
35    * Double click on chat to open preferences
36
37    * APPRENTICE
38      Phase2
39      DONE - match counters (part 2)
40        DONE . migration script for old users
41      - guarantee for apprentice
42
43
44
45 ---------
46    - APPRENTICE
47      Phase2
48      DONE - match counters (part 2)
49        DONE . migration script for old users
50
51    - APPRENTICE
52      Phase1
53      DONE - correggere minuta giornaliera
54      DONE - aggiungere mask per autogar
55      DONE - correggere email per apprentice
56      DONE - verificare la variabile per tout IP ban apprentice
57      DONE - chat ban for apprentice
58
59      DONE - ip check and time limit
60        DONE . sql
61          DONE . temporary table limitation
62        DONE . message
63      DONE - usermgmt extension
64      DONE - add close button
65      DONE - add apprentice icon
66      DONE - match counters (part 1)
67        DONE . sql for match counters
68      DONE - new info system
69        DONE - click management
70        DONE - show user info (RO)
71          DONE - require command/info
72          DONE - fix fiverank table
73          DONE - fix bug with bitwise
74          DONE - fix layout of tables
75      DONE - aggiungere books.png
76
77     - MENTORS
78      - listen all
79
80    - BUDDY LIST
81      - white list
82      - black list
83      - delegate
84
85    - DEANONYMIZER
86       . study how to move login delta injection
87
88    - CERTIFICATIONS
89       DONE . Guarantes for certified-only (buttons choice managed)
90       DONE . Tables for certified-only
91       . Term Of Use
92       . Placing for certified-only
93
94    - IP CLASSES BAN
95       DONE . BAN and BLACK lists added
96       DONE . update method to SIGHUP manager
97       DONE . create constructor refactored
98
99    - PLACEMENT-NORMALIZATION
100       DONE . Normalize previous points
101       DONE . Denormalize "Info" view
102       DONE . Denormalize explained matches
103       DONE . Check placement
104       DONE . Distinguish between inherited mult and local mult
105
106    - AUTO-MAINTENANCE
107      DONE . Terms Of Service acceptance
108        DONE . print date of hard switch
109        DONE . TOS version
110        DONE . user TOS acceptance (db field)
111        DONE . show TOS ([show me later, yes, no]/[yes, no])
112        DONE . switch-off date
113        DONE . manage accept
114        DONE . manage refuse
115        DONE . show current TOS
116        DONE . disable user reason integer field and remove SUSPEND state (db, php)
117        DONE . fix tos layout
118        DONE . opt - download TOS
119        . opt - checkbox for anonimous users with message when not checked
120        . opt - button enabled when arrived to the bottom of the TOS only
121        . opt - check TOS version between config file and TOS file
122      DONE . show guarantee (/guar <login> command)
123        DONE . multi-language
124        DONE . command documentation
125        DONE . manage disagreeding users investigation
126        DONE . self guaranteed
127      . DONE New Users Guarantee Procedure
128        . DONE Change guarantee workflow
129        . DONE Db update
130
131          UserA                 UserB                      Admin
132 -------------------------------------------------------------------------
133       guarante UserB
134            |
135            v
136       Save on mail
137          table,
138       email to UserB
139     (Disabled, MAILED)
140 -------------------------------------------------------------------------
141                            Receive email
142                            to check address
143                                  |
144                                  v
145                            Click on link
146                                  |
147                                  v
148                            Check on mail
149                                table,
150                            update user status,
151                            delete mail rec
152                           (Disabled, TOBECHK)
153 -------------------------------------------------------------------------
154                                                        admin panel
155                                                        accept user
156                                                             |
157                                                             v
158                                                      send email with
159                                                      password,
160                                                      update user status
161                                                       (Normal, NONE)
162 -------------------------------------------------------------------------
163                            Receive email
164                            with password
165 -------------------------------------------------------------------------
166
167      DONE . More user info in the list
168      DONE . Manage date to display when a user was required
169      . Email-address expiration check
170      . Account expiration
171
172
173    DONE - CONTINUE FEATURE
174      DONE . replace explicit strings with multilanguage array
175      DONE . add a php downloader with filtering on allowed requests
176      DONE . save points every game
177      DONE . modify points calculation to include order and mazzo
178      DONE . exclude not standard types from statistics
179          DONE . daily reports (1 for each active tournament)
180          DONE . monthly stats (for normal match only)
181      DONE . show current match ID when created
182      DONE . add info about continue to the info page
183      DONE . add command to continue
184          DONE . check consistency of the request
185      DONE . rearrange users and game status to continue the selected match
186      DONE . investigate user reordering ??
187
188    - WEBSOCKET TRANSPORT
189      . refactoring $enc attribute management
190      DONE . reintroduced $enc = 'plain' for websocket
191      DONE . fallback for not correct WS version
192      DONE . fini of ws stream
193      DONE . reactivate compression
194      DONE . fix xynt_test01
195      DONE M2: brisk working
196      DONE . manage multiport apache config
197      DONE . manage headers correctly in sac-a-push
198      DONE . manage transport.close method where required
199      DONE . xynt_stream: manage fallback to multiple ports
200      DONE . manage fini for ws
201      POST . server: manage input data from clients
202      POST . manage ping/pong (seems not required)
203
204      DONE . client (xynt_streaming.js)
205      DONE . server (transport.phh)
206
207      DONE M1: xynt_test01.php working
208
209
210    - improved S
211      . db update (add components, maybe single string)
212      . filter in index.php
213      . filter in index_wr.php
214
215    - prefs API:
216      . prefs_assign(content): assign json content as output var
217      . prefs_apply(prefs_new): apply new content to g_prefs and system
218      . prefs_load(content): load json content and apply to g_prefs and system
219
220      . prefs_update: update preferences temporarly
221      . prefs_save: save to the server the new prefs
222
223    - preferences (listen into preferences)
224         // js var, volatile server, (db server || cookie)
225         temporary: js var, volatile server
226         permanent: js var, volatile server, (db server || cookie)
227
228      . data from db OR, if missing, from cookies
229
230      . update values
231      . database change
232      . MANAGE NOT AUTH USERS
233
234    - preferences (with "modifiable S")
235      . Mod. S: new flag into database
236      . graph infrastructure
237      . new box to edit color
238
239   MAJOR |
240  -------+
241    - BUG: some connection to the named socket fails
242    - Not simultaneous more then one stream
243
244
245   MINOR |
246  -------+
247    WIP - try to be more antivirus-friendly
248    - multiple rows between games
249    - packetize and automatize php-ancillary and apache module
250    - DISABLED_TO_FIX: DNS access (perform blocking dns requests, must be fixed)
251
252
253   DONE |
254  ------+
255    DONE - temporarly server hung not reflected on user timeouts
256    DONE - timeouted users are still be able to sit down (only the first at the table is banned)
257    DONE - page still opened after the server restart
258    DONE - log_legal address fix
259    DONE - manage too fast reload in xynt-streaming
260    DONE - add xhr as transport layer and manage different streams better
261    TEST - BUG: pari + 72 non fa 4x ma attualmente fa 3x, da correggere
262    TEST - BUG: lurker are logged out (and remain a pending socket opened (look the spush log)
263    DONE - save/restore database
264    DONE - into the room local step remains -1
265    DONE - centralize all '<script ...' incapsulation to allow multiple transport system.
266    DONE - BUG: access with password from 2 diff browsers the second go in strange "page not found" 
267           in the first tentative, the second works
268    DONE - BUG: access with password from 2 diff browsers place the first in a strict loop (the 
269           problem was a call to a static parent method instead of the overrided child method,
270           substitute self:: with the dynamically get class::)
271    DONE - garbage management
272
273    DONE/FROZEN - problem with getpeer (HOSTADDR)
274
275    DONE - slow cards distribution
276    DONE - substr to mb_substr
277    DONE - parametrizations:
278           . parametrization of $DOCUMENT_ROOT  var in brisk-spush.phh file
279           . parametrization of SITE_PREFIX(_LEN) define
280           . move the name of the named socket into the configuration file
281    DONE - manage and test cross forwarder between table and room
282    DONE - setcookie (for tables only and persist prefs)
283    DONE - images flickering on slow windows: try to poll stream every 300 ms (seems to be download problem)
284    DONE - database connection fails after a while, check close and try PGSQL_CONNECT_FORCE_NEW.
285    DONE - unneeded garbage_time.expired access
286    DONE - BUG: fast loop on stream index_rd_ifra page (js watchdog start without timeout corrupt counts)
287    DONE - BUG: logout failed (fixed with a garbage_collector wrapper at sac-a-push level
288    DONE - 404 wrong page management (remove directories redirections (es. brisk/))
289    DONE - configuration file management
290    DONE - app level keep-alive
291    DONE - index_wr other issues
292    DONE - from room to table
293    DONE - from table to room
294    DONE - chunked
295    DONE - bug: read from a not resource handle (already closed because a new socket substitute it)
296    DONE - partial write for normal page management
297    DONE - index_rd_ifra: last_clean issue
298    DONE - fwrite failed error management (select, buffer where store unsent data, and fwrite check and retry)
299    DONE - bug: after restart index_rd.php receive from prev clients a lot of req
300    DONE - index_wr.php::chat
301    DONE - index_wr.php::exit
302    DONE - index_rd.php porting
303    DONE - generic var management from internet
304    DONE - index.php auth part
305    ABRT - index_wr.php::reload - reload is js-only function
306    ABRT - keepalive management - not interesting for our purposes
307
308  BRISK4 (mammuth)
309  ======
310
311  - STEP MANAGEMENT VERIFY
312  Slim Paragraph
313  DONE - move the garbage timeout on file
314  DONE - in index_rd load all data only when required
315  - briskin5 alignment
316    DONE . extern del garb_timeout
317    DONE . user_load parameters verify
318    DONE . Bin5::load_data and Bin5::save_data refactoring with
319           data split
320    . move many function into "Bin5 class"
321  - garbaging of .step files
322
323  DB: - initial usage
324      DONE - configurabilitĂ  file o db
325      DONE - aggiornare le funz di gestione db in modo che prevedano anche il flag DISABLE
326      DONE - travasatore file to pg
327        DONE - travaso punteggi
328        DONE - memorizzazione nuovi i punteggi nel db
329        DONE - gestione classifiche in SQL
330          DONE - produrle
331          DONE - mostrarle
332
333      STEP 1.1
334        DONE - points archiver
335
336      STEP 1.2
337        DONE - partial usability if database go down.
338
339      STEP 1.5
340      - sistema di inserimento nuovi utenti (riversatore da form di inserimento)
341
342      STEP 2
343      - modifica password   
344      - ripristino password 
345
346      STEP 3
347      - comunicazioni di aggiornamento (stato salvato sul server) 
348
349  DONE - var $G_base aggiunta per gestire include in include da path differenti
350
351  BRISK3 (trusty)
352  ======
353   DONE - donameter
354     DONE - G_donors
355     DONE (WOW!) - js object with infos
356     DONE - main logic at login (cookie check in index_rd.php; show_message and createCookie via snippets with block
357            to prevent fast reload)
358     DONE - cookie per non assillare e visualizz.
359     DONE - graphical donameter
360     WIP content (in conf.)
361
362   DONE - numero di tavoli auth-only nel .brisk-install
363   - isolation
364     TEST - ricalcolo delle persone in piedi quando si cambia modalitĂ 
365     DONE - se si e' in isolation non si può cambiare nick perdendo l' auth
366     DONE - non leggere le chat di quelli non autenticati (in isolation)
367     DONE - regole per passare alla modalita' (in piedi o ai tavoli autenticati) 
368     DONE - treni non auth da nascondere 
369     DONE - verso gli altri ??: uguale a prima
370
371   finire multilingua (briskin5/index_wr.php e altri se ce ne sono)
372   coniglio
373   only auth strictly
374   placing limits to config file
375
376 Dunque, 
377
378 - come vengono aggiornate le classifiche: ogni giorno alle 23:58
379
380 - cosa cambia tra le tre coppie di classifiche: 
381   ci sono le classifiche dell' ultima settimana, quelle dell' ultimo mese,  e quelle dell' ultimo trimestre,
382   per ognuno di questi lassi di tempo poi c'è la classifica di chi ha giocato piĂą di TOT partite o meno di TOT partite, con TOT che cambia a seconda del lasso di tempo.
383
384 - come vengono calcolate le classifiche: per ogni utente vengono presi tutti i punti fatti ai tavoli con lucchetto nel lasso di tempo preso in considerazione (ultima settimana, ultimo mese o ultimo trimestre), sommati e divisi per il numero di partite fatte in quello stesso lasso di tempo per normalizzare i valori; poi siccome la gente quando vede 0.18734 sbarella ho deciso di moltiplicare il tutto per 100.
385
386 Un esempio per chiarire:
387
388   l'utente 'pippo' che Ă¨ nuovo gioca 4 partite nell'ultima settimana con i seguenti punteggi:
389     -2, 1, 2, 1
390   lo score viene { [ (-2) + (1) + (2) + (1) ] / 4 }  * 100 = 50.0
391   
392   a paritĂ  di score tra utenti va piĂą in alto chi ha giocato piĂą partite.
393
394 Se dopo quelle 4 partite 'pippo' non ne giocherĂ  piĂą, passata una settimana dall'ultima giocata 
395 sparirĂ  dalla classifica settimanale e rimarrĂ  in quelle mensili e trimestrali.
396
397
398   
399
400
401
402
403  BUG
404  ---
405  
406   DONE - paste da demauroparavia
407   DONE - recupero partita per re-login con password
408   DONE - problema "|" nei nomi (manca enhance degli script lato server)
409   - problema col treno se mouse sopra mentre stringe (verif)
410   
411  MINOR
412  -----
413
414  NORMAL
415  ------
416
417   - win test
418   WIP - /listen 
419     DONE - skin della textarea
420     DONE - set cookie 
421     DONE - init client (read from cookie) - ALWAYS BY SERVER
422     DONE - init server
423     DONE - after cookie check auth-only when no-auth case
424     DONE - aggiungi info accanto a "Chat"
425   DONE - /mesgtoadm
426   DONE - img dei comandi
427
428   DONE - form per garantire utenti (accoda in un file nel formato corretto)
429   DONE -   process request
430   DONE -   show form
431   DONE -   close butt
432   DONE -   submit form
433   DONE -   process form js side 
434   DONE -   process form
435   DONE -   documentazione in help
436
437   DONE - user status
438
439   DONE - aggiornare help
440   DONE -   overflow management
441   DONE -   for status
442   -   for password
443
444   DONE - reload home
445   - notify for long pages
446
447   - buddy list
448   - silenziastolti vari (fino al buddy import)
449   - restrict challenge per IP
450   - restricted charset for login
451   - watchdog
452
453   - db (minimal)
454     - db admin page
455     - user db admin
456     - use db 
457     - admin db
458
459     - studiare un anti-dos
460   - login modify
461  DONE  - db (fake)
462  DONE  - display auth
463     - manage preferences 
464
465  minor
466  -----
467    - auth after login
468
469 ----- done ------
470
471  BUG
472  ---
473   DONE   righe troncate
474   DONE - questione "a monte" che:
475   DONE   - lascia fuori il bottone
476   DONE   - scrive &agrave e compagnia
477   DONE - refresh act_table when unauthorized
478   DONE - problema ghost autenticato (ne prendi il posto ovunque sia)
479
480  MINOR
481  -----
482   DONE - refactoring of the owner name (auth attr for owner name)
483   DONE   - room
484   DONE     - at chat input line 
485   DONE     - in the chat output line
486   DONE     - deauth management
487   DONE - table
488   DONE   - at chat input line
489   DONE   - in the chat output line
490   DONE   - for user area of other users
491   DONE   - deauth management
492   DONE - alart to one user
493
494
495  NORMAL
496  ------
497   DONE - strong ban: "expire time|IP|session|(nick if authenticated)"
498   DONE   - login: se auth      -  verifica solo gli expire per quel nick
499   DONE   -        se non auth  -  verifica gli expire per IP e sessione
500   DONE   - riscrivere messaggi
501
502   DONE - login 
503   DONE   - se pass:
504   DONE     - richiede per l' utente un token (tutta la parte backend va un minimo studiata)
505   DONE     - lo legge, ci hasha la password
506   DONE     - invia la pass al server hashata
507   DONE   - se non pass:
508   DONE     - check del login e return corretto
509   DONE     - oggetto in shm single table con ( "ip", "login", timestamp ) e suo management
510   DONE     - rename ghost if logged
511   DONE     - onunload_cb e onbeforeunload_cb !!! 
512   DONE   - da change attrs a change class (input field)
513   DONE     - colore del bg per arrivare ad essere omogeneo
514   DONE     - cambiare path e file di config
515   DONE   - login with or without pass
516   DONE   - registered nick notice (METTERE IL MSG NELLA PAG DI LOGIN)
517   DONE     - segnalare tavoli solo per auth
518   DONE     - rename restriction at auth table
519   DONE     - change nick (strcasecmp)
520   DONE   - refact js tables to handle flags
521   DONE - room javascript refactoring
522
523   DONE - work background
524   DONE - reserved tables
525
526
527  BRISK2 (spawn)
528  ======
529
530    
531    URGENT - tables spawn
532             DONE - link with photos
533             DONE - top banner in Etc file
534             DONE - spawn of a table
535             DONE - data to cookies (removed table_idx from xhr calls also)
536             DONE - set subst to shutdowner/shutdowned
537             DONE - return to index.php
538             DONE - game's token
539             DONE - recover of corrupted table data
540             DONE - closure of a table
541             DONE - flush of the table
542             DONE - security checks for right scope access
543             DONE - garbage collector management
544             DONE -    recursive garbage - howto ?
545             DONE - stat & subst in browser
546             DONE - laccwr setting and exit if all players are unactive for some time
547             DONE - the list of test case
548             DONE - shm dimension
549             DONE - remove unused parts
550             DONE - move images
551             DONE - optimizations
552             DONE - cambiare titolo al tavolo
553             DONE - shutdowning lock tables
554             DONE - topbanner
555             DONE - public announcements
556             DONE - 10 sec to exit from table
557
558             FAR - inheritances
559    
560    TRAIN  -  DONE - add again in reload   
561              DONE - wag_set refact
562              DONE - filtra char speciali per title
563              DONE - chatt_send refact 
564              DONE - elenco dei giocatori
565              DONE - documentazione online
566              DONE - timeout management     
567              LATER - border color a muzzo
568        
569    NORM   - testament
570    NORM   - public announcements
571    NORM   - 10 sec to exit from table
572    NORM   - moving label for tables click
573
574 ----------------- join -----------------
575    NORM   - map
576
577    NORM   - restart preload img
578    NORM   - tools dir with a main and some pages where check briscola tools.
579    NORM   - watchdog
580
581    NORM   - chat vecchie in reload (forse)
582
583  MIDDLE TODO
584  ===========
585
586    - user assistant (with button to enable disable)
587    - documentation
588
589
590  FAR TODO
591  ========
592    NORM - internationalization
593    NORM - img -> div + css
594    
595  WEB
596  ===
597
598    - link to stable/unstable
599
600 -------------------------------------------------------------------
601  DONE
602  ====
603
604    ABORTED - asta: highlight buttons (css hover) - change pointer when over
605    DONE - step proxy
606    DONE - special chars in js
607    DONE - ban temporaneo dai tavoli
608    DONE - flash player to play sound
609    DONEBUG - (aum. il timeout) - carte giocate che restano girate
610          Sembra non migliorare di molto la cosa, gestita la cache
611          correttamente, sono apposto.
612
613    DONE - one player reject a game, to less points (<= 2)
614    DONE - help page
615    DONE - test di download per la cache
616    DONE - se passano tutti tranne l'ultimo l'asta va al penultimo.
617           Corretto il codice, occorre verificare se questo
618           ingenera qualche problema.
619    DONE - raddoppiato il numero di righe nella chat
620    DONE - corretto bug del /nick
621    DONE - carosello pubblicitĂ  altout
622    DONE - smammamorti
623    DONE - unload of the stream
624    DONE - standup centrati
625    DONE - current player - in info
626    DONE - HELP butt con ABOUT, REGOLE, VERSIONE
627    DONE - welcome lines in the chats (room and table)
628    DONE - welcome lines in the chats (room and table)
629    DONE - nomi in primo piano se vai sul quadrato   
630    DONE - to pass explicit config file to INSTALL.sh
631    DONE - flag to create a config file
632    ABRT - bottoni => immagini
633    DONE - aggiungere bottone al login
634    DONE - nomi in primo piano se vai sul quadrato   
635    DONE - installer to set cookie path
636    DONE - change name
637    DONE - automatic and manual logout
638    DONE - cache problems solved via .htaccess
639    DONE - all players out of the auction
640    DONE - time to send cards
641    DONE - hide cards before sends at a new game
642    DONE - well recognization of the browser and O.S.
643    DONE - login consistency !!!!
644    DONE - functionalization of garbage
645    DONE - call garbage function into login
646    DONE - game
647    DONE - manage the reload from scratch of the table page
648    DONE - table reset
649    DONE - sendcard => card_send(idx, ....)
650    DONE - show table for game
651    DONE - points calculation
652    DONE - make-up of the chooser
653    DONE - where place the briscola on the table
654    DONE - users info
655    DONE - show current auction position
656    DONE - table with internal management of the transition between pages.
657    DONE - server side page abort management  
658    DONE - cookie problem with Ajax
659    DONE - spostare il tasto "esco"
660    DONE - to pass explicit config file to INSTALL.sh 
661    DONE - 8 tables
662    DONE - safety out management
663    DONE - info enhancement and related button (how win the last game and
664           with how much points ?)
665
666  WEB
667    DONE - homepage
668    DONE - screenshots
669
670 DOC
671    CHAPTERS
672       HTTP Streaming
673       Local serializer
674       Database on shmem
675       Page abort (reload on http streaming case)
676       Chat
677       Cookies management
678       CSS tricks
679
680 CHECK ON NEW SERVERS
681 .htaccess AllowOverwrite mode for Cache-Control directive
682
683
684
685
686 */
687