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